无法在python中使用plotly打印
我有以下Python数据帧,我想绘制Sno。使用plotly对每列的值进行比较无法在python中使用plotly打印,python,pandas,plotly,Python,Pandas,Plotly,我有以下Python数据帧,我想绘制Sno。使用plotly对每列的值进行比较 TT AN AP AR AS BR CH CT DN DL ... PY PB RJ SK TN TG TR UP UT WB Sno. 1 81 0 1 0 0 0 0 0
TT AN AP AR AS BR CH CT DN DL ... PY PB RJ SK TN TG TR UP UT WB
Sno.
1 81 0 1 0 0 0 0 0 0 7 ... 0 1 3 0 1 1 0 12 0 0
2 27 0 0 0 0 0 0 0 0 0 ... 0 0 1 0 0 2 0 1 0 0
3 15 0 0 0 0 0 0 0 0 0 ... 1 0 0 0 0 1 0 0 1 0
4 11 0 0 0 0 0 0 0 0 1 ... 0 0 0 0 0 1 0 2 0 1
5 37 0 0 0 0 0 0 0 0 2 ... 0 1 3 0 1 8 0 2 1 0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
147 rows × 36 columns
因此,我的方法如下:
def plot_case(df):
for i in df.columns.values :
dn = df.index.values
dc = df[i].values
xaxis = go.layout.XAxis(title="Day number")
yaxis = go.layout.YAxis(title="New cases")
fig = go.Figure(layout=go.Layout(title=i, xaxis=xaxis, yaxis=yaxis))
fig.add_trace(go.Scatter(x=dn, y=dc))
但我并没有在jupyter笔记本中得到任何输出,那个单元只是运行而没有给出任何错误
因此,我对单列TT
xaxis = go.layout.XAxis(title="Day number")
yaxis = go.layout.YAxis(title="New cases")
fig = go.Figure(layout=go.Layout(title="TT", xaxis=xaxis, yaxis=yaxis))
fig.add_trace(go.Scatter(x=df.index.values, y=df.TT.values))
成功了!
有人能给我解释一下这个for循环出了什么问题吗?
谢谢大家! 这里可能有更多问题,但无论如何您都需要打电话
fig.show()
问题的根源在于jupyter笔记本电脑的行为以及它们如何确定单元输出。假设您有一个名为
df
的数据帧。如果您现在创建一个单元格,表示:
df
在执行时,您将接收数据帧作为该单元的输出。但是,如果将单元格更改为
new_df=df
或
范围(5)内的i的:
df
您将不再接收任何输出。原因是,默认情况下,jupyter笔记本电脑总是输出最后接收到的输出。new_df=df
的赋值不会返回任何内容。for循环也是如此。为了查看所需内容,应该使用并将fig.show()
或matplotplib.pyplot.plot()
添加到for循环中。这样,您就不必依赖jupyter笔记本电脑的默认输出行为,而是可以保证一定的输出
最后,您的代码变成:
def plot_案例(df):
对于df.columns.values中的i:
dn=df.index.values
dc=df[i]。数值
xaxis=go.layout.xaxis(title=“天数”)
yaxis=go.layout.yaxis(title=“新案例”)
fig=go.Figure(布局=go.layout(title=i,xaxis=xaxis,yaxis=yaxis))
图添加_轨迹(go.散射(x=dn,y=dc))
图2(图3)
如果要单独绘制,或
def plot_案例(df):
xaxis=go.layout.xaxis(title=“天数”)
yaxis=go.layout.yaxis(title=“新案例”)
fig=go.Figure(布局=go.layout(title='comparison',xaxis=xaxis,yaxis=yaxis))
dn=df.index.values
对于df.columns.values中的i:
dc=df[i]。数值
图添加_轨迹(go.散射(x=dn,y=dc))
图2(图3)
如果您只想在一个绘图中进行比较,请改为。注意,我从for循环中抽出了那些不依赖于迭代值的行来提高效率
fig.show()