How to plot a graph with own data created by a (for) loop?

Before I worked with predefined data sets, this time I decided to create my own. This led me to a problem with plotting a graph with variable n and S_T. Based on a defined S_T which is a strike price and n number of observations I created a for loop with the following conditions.

I want my loop to work in the range (0,n) when S_T exceeds 169 then return 1000, when S_T is between 84.5 and 169 use the formula, when it’s less then 84.5 return 0

I want to check if S_T‘s starting at 139 follows the condition and print the result. Then S_T=140 check and print result etc.

Which gives correct results: (0,0,0,….,1000,1000). However, If I want to plot both values, I don’t see the desired result.

My question is: How to do it correctly, is the answer related to storying data in DataDrame? How to store all of the results from S_T that would produce a valid graph?

My code:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

S_T = 139
n = 300 

for S_T in range(0,n):
if S_T > 169:
    print(1000)
elif 84.5 < S_T <169:
    print(1000-max(0,1000*(169/S_T -1)))
else: print(0)
S_T += 1 

plt.plot(n,S_T);
plt.xlabel('Number of iterations')
plt.ylabel('ICON');
print(S_T)
300

Which is a mistake, I would like to print every value

What the code produces:
https://i.stack.imgur.com/kFBOG.png

>Solution :

i don’t really understand what you want to do in your for loop but you can just use 2 lists for your desired x and y values like so:

import plotly.graph_objects as go
x = []
y = []
for i in range(start, end):
    if i > some value:
        x.append(do something with i)
        y.append(do something with i)
    else:
        x.append(do something else with i)
        y.append(do something else with i)
fig = go.Scatter(x=x, y=y)
fig.show()

Leave a Reply