python - 将数据添加到带有 suplots 的跟踪中,以维护破折号中每个子图的数据拆分
问题描述
我有虚拟数据框:
import pandas as pd
df=pd.DataFrame({'A':[1,2,3,20,30,40],'B':['Tita','Tita','Tita','Burru','Burru','Burru'],'Z':[1,2,3,1,2,3]})
我想为 B 列(Tita 和 Burru)中的每个值创建一个子图。
此代码产生预期的输出:
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(rows=1, cols=2)
lista_syst=df.B.unique()
fig.add_trace(
go.Scatter(x=df.loc[df['B'] == 'Tita', 'A'], y=df.loc[df['B'] == 'Tita', 'Z']),
row=1, col=1
)
fig.add_trace(
go.Scatter(x=df.loc[df['B'] == 'Burru', 'A'], y=df.loc[df['B'] == 'Burru', 'Z']),
row=1, col=2
)
fig.update_layout(height=600, width=800, title_text="Subplots")
fig.show()
但我想让它自动为B 列中的n 个可能值,如下所示:
from plotly.subplots import make_subplots
import plotly.graph_objects as go
df=pd.DataFrame({'A':[1,2,3,20,30,40],'B':['Tita','Tita','Tita','Burru','Burru','Burru'],'Z':[1,2,3,1,2,3]})
fig = make_subplots(rows=1, cols=2)
lista_syst=df.B.unique()
for sist in lista_syst:
print(sist)
print(df.loc[df['B'] == sist, 'A'])
for i in range(1,3):
fig.add_trace(
go.Scatter(y=df.loc[df['B'] == sist, 'A'],x=df.loc[df['B'] == sist, 'Z']),
row=1,col=i
)
最后一个代码返回两个包含所有值的重复图(B 中的两个值使用相同的图两次),怎么会这样?
有可能做我想做的事吗?
解决方案
你在寻找这样的东西吗?
from plotly.subplots import make_subplots
import plotly.graph_objects as go
df=pd.DataFrame({'A':[1,2,3,20,30,40],'B':['Tita','Tita','Tita','Burru','Burru','Burru'],'Z':[1,2,3,1,2,3]})
fig = make_subplots(rows=1, cols=2)
lista_syst=df.B.unique()
for sist in lista_syst:
print(sist)
print(df.loc[df['B'] == sist, 'A'])
fig.add_trace(
go.Scatter(
x=df.loc[df['B'] == sist, 'Z'],
y=df.loc[df['B'] == sist, 'A']))
fig.update_layout(height=600, width=800, title_text="Subplots")
fig.show()
评论后编辑:
如果您希望单独的图表彼此相邻,那么您可以执行以下操作:
from plotly.subplots import make_subplots
import plotly.graph_objects as go
df=pd.DataFrame({'A':[1,2,3,20,30,40],'B':['Tita','Tita','Tita','Burru','Burru','Burru'],'Z':[1,2,3,1,2,3]})
fig = make_subplots(rows=1, cols=2)
lista_syst=df.B.unique()
i=0
for sist in lista_syst:
i=i+1
fig.add_trace(
go.Scatter(x=df.loc[df['B'] == sist, 'A'],y=df.loc[df['B'] == sist, 'Z']),
row=1,col=i
)
fig.update_layout(height=600, width=800, title_text="Subplots")
fig.show()
推荐阅读
- javascript - 使用javascript删除容器中的所有类
- arrays - Ruby:选择已解析 json 的特定元素
- c++ - 当数组(句子)只有 30 个空间时,为什么要打印 38 个元素?
- javascript - 限制 .filter 结果列表的数量 - Jquery
- html - 如何在整个 DOM 中选择特定类的最后一个子类?
- html - 隐藏只有一个 div 的溢出
- javascript - How do i use an API on the P5js library?
- javascript - how to use session Storage for radio and checkbox input html and JavaScript
- javascript - ReactJS - console.log(ObjectName) //Working console.log(ObjectName.property) //Property not recognized
- laravel - Make entered / selected tab active VueJS