Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Plotly:带'的交互式图形;行+;标记';使用plotly.express的模式_Python_Pandas_Numpy_Matplotlib_Plotly - Fatal编程技术网

Python Plotly:带'的交互式图形;行+;标记';使用plotly.express的模式

Python Plotly:带'的交互式图形;行+;标记';使用plotly.express的模式,python,pandas,numpy,matplotlib,plotly,Python,Pandas,Numpy,Matplotlib,Plotly,df: id timestamp data Date Start timestamp 2020-01-15 06:12:49.213 40250 2020-01-15 06:12:49.213 20.0 2020-01-15 NaN 2020-01-15 06:12:49.313 402

df

                        id      timestamp               data    Date            Start   
timestamp                                   
2020-01-15 06:12:49.213 40250   2020-01-15 06:12:49.213 20.0    2020-01-15      NaN 
2020-01-15 06:12:49.313 40251   2020-01-15 06:12:49.313 19.5    2020-01-15      0.0 
2020-01-15 08:05:10.083 40256   2020-01-15 08:05:10.083 20.0    2020-01-15      1.0 
2020-01-15 08:05:10.183 40257   2020-01-15 08:05:10.183 20.5    2020-01-15      0.0 
2020-01-15 09:01:50.993 40310   2020-01-15 09:01:50.993 21.0    2020-01-15      0.0 
2020-01-15 09:01:51.093 40311   2020-01-15 09:01:51.093 21.5    2020-01-15      0.0 
2020-01-15 09:51:01.890 40336   2020-01-15 09:51:01.890 22.0    2020-01-15      0.0 
我想使用
plotly.express
、color by
Start
(这是一个虚拟变量)和
mode='lines+markers'
绘制一个交互式图形。但我无法添加行。目前,使用下面的代码

import plotly.express as px

fig = px.line(df, x="timestamp", y="data", title='xxx')
fig = px.scatter(df, x="timestamp", y="data",color='Start')   
fig.show()
我得到了一个阴谋


更新:

尝试:

import plotly.express as px

fig = px.line(x=df['timestamp'], y=df['data'])
fig.add_scatter(x=df['timestamp'], y=df['data'], marker_color=df['Start'])
它返回:

问题在于,在您的代码中,地物对象被覆盖,即散点图正在替换线图,而不是添加到线图中

import pandas as pd
import plotly.express as px

df = pd.DataFrame({'timestamp': ['2020-01-15 06:12:49.213', '2020-01-15 06:12:49.313', '2020-01-15 08:05:10.083', '2020-01-15 08:05:10.183',
                                 '2020-01-15 09:01:50.993', '2020-01-15 09:01:51.093', '2020-01-15 09:51:01.890'],
                   'data': [20.0, 19.5, 20.0, 20.5, 21.0, 21.5, 22.0],
                   'start': [0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]})


fig = px.line(x=df['timestamp'], y=df['data'])
fig.add_scatter(x=df['timestamp'], y=df['data'], mode='markers', marker_color=df['start'], marker_size=10)

fig.update_layout(plot_bgcolor='#bababa', showlegend=False)

fig.show()

谢谢你的回答。它实现了线图,但没有标记,也没有按列显示颜色
df['start']
。请参阅问题更新。我更新了答案,尝试将
mode='markers'
添加到散布跟踪。它正在工作!顺便说一句,我可以问一下为什么之前的问题在更新?有可能改变绘图的背景颜色吗?问题是,在我的例子中,
px.scatter
默认使用
mode='markers'
,而在你的例子中,它默认使用
mode='lines'
,这就是为什么你得到的是两个线图,而不是一个线图和一个散点图。这可能是因为我们使用不同版本的plotly。您可以在布局字典中更改打印背景颜色,即,您可以设置
打印颜色('bgcolor=''bababa'
(其中,'bababa是深灰色的十六进制代码)或任何其他颜色,而不是设置
打印颜色('bgcolor='white'
)。