为数据绘制具有不同 y 轴的图表
Plotly graph having like different y axis for data
这是我的第一个 post,到目前为止我还没有找到(据我搜索)。
因此,我正在尝试构建一个带有 streamlit 的仪表板以及我正在使用的绘图。我按照示例将 'DateTime' 作为 X 轴和两个不同的列以使用相同的 Y 轴制作 2 条线。
但我的问题是在图表中它们似乎有不同的 Y 轴而不是相同的。在我尝试过的例子中,我没有得到相同的行为,我尝试了不同的方法来解决这个问题,但它仍然是一样的。请问有没有人和我有同样的错误或者有解决办法
我试过使用这个数据:
print(df)
DateTime value_num1 value_num2
18:12:17 84.4937 84.49000
18:12:05 84.5038 84.47000
18:11:59 84.5247 84.49000
18:11:52 84.5386 84.52000
18:11:42 84.552 84.51000
df2 = df.sort_values(by="DateTime")
Ex1:
fig = px.line(df2, x='DateTime', y=['value_num1', 'value_num2'])
Ex2:
fig = px.line(df2, x='DateTime', y='value_num1')
fig.add_scatter(x=df2['DateTime'], y=df2['value_num2'])
我也尝试过使用 melt:
dfm = df2.melt('DateTime', var_name='cols', value_name='vals')
DateTime cols vals
18:11:42 value_num1 84.552
18:11:52 value_num1 84.5386
18:11:59 value_num1 84.5247
18:12:05 value_num1 84.5038
18:12:17 value_num1 84.4937
18:11:42 value_num2 84.51000
18:11:52 value_num2 84.52000
18:11:59 value_num2 84.49000
18:12:05 value_num2 84.47000
18:12:17 value_num2 84.49000
fig = px.line(dfm, x='DateTime', y='vals', color='cols')
但是结果一样。有人可以让我知道我做错了什么,或者是否有另一种方法可以使用 streamlit 放置“正常”图?我尝试了 matplotlib,但似乎无法将图像用于 streamlit。
剧情是这样的。
enter image description here
感谢您的宝贵时间。
将时间转换为日期时间格式。
示例代码
import pandas as pd
import plotly.express as px
data = {
'DateTime': ['18:12:17', '18:12:05', '18:11:59', '18:11:52', '18:11:42'],
'value_num1': [84.4937, 84.5038, 84.5247, 84.5386, 84.552],
'value_num2': [84.49000, 84.47000, 84.49000, 84.52000, 84.51000]
}
df = pd.DataFrame(data)
# Convert DateTime string to datetime format.
df['DateTime'] = pd.to_datetime(df['DateTime'],format= '%H:%M:%S' ).dt.time
fig = px.line(df, x='DateTime', y=['value_num1', 'value_num2'])
fig.update_layout(
xaxis = dict(autorange="reversed")
)
fig.show()
输出
这是我的第一个 post,到目前为止我还没有找到(据我搜索)。 因此,我正在尝试构建一个带有 streamlit 的仪表板以及我正在使用的绘图。我按照示例将 'DateTime' 作为 X 轴和两个不同的列以使用相同的 Y 轴制作 2 条线。
但我的问题是在图表中它们似乎有不同的 Y 轴而不是相同的。在我尝试过的例子中,我没有得到相同的行为,我尝试了不同的方法来解决这个问题,但它仍然是一样的。请问有没有人和我有同样的错误或者有解决办法
我试过使用这个数据:
print(df)
DateTime value_num1 value_num2
18:12:17 84.4937 84.49000
18:12:05 84.5038 84.47000
18:11:59 84.5247 84.49000
18:11:52 84.5386 84.52000
18:11:42 84.552 84.51000
df2 = df.sort_values(by="DateTime")
Ex1:
fig = px.line(df2, x='DateTime', y=['value_num1', 'value_num2'])
Ex2:
fig = px.line(df2, x='DateTime', y='value_num1')
fig.add_scatter(x=df2['DateTime'], y=df2['value_num2'])
我也尝试过使用 melt:
dfm = df2.melt('DateTime', var_name='cols', value_name='vals')
DateTime cols vals
18:11:42 value_num1 84.552
18:11:52 value_num1 84.5386
18:11:59 value_num1 84.5247
18:12:05 value_num1 84.5038
18:12:17 value_num1 84.4937
18:11:42 value_num2 84.51000
18:11:52 value_num2 84.52000
18:11:59 value_num2 84.49000
18:12:05 value_num2 84.47000
18:12:17 value_num2 84.49000
fig = px.line(dfm, x='DateTime', y='vals', color='cols')
但是结果一样。有人可以让我知道我做错了什么,或者是否有另一种方法可以使用 streamlit 放置“正常”图?我尝试了 matplotlib,但似乎无法将图像用于 streamlit。
剧情是这样的。 enter image description here
感谢您的宝贵时间。
将时间转换为日期时间格式。
示例代码
import pandas as pd
import plotly.express as px
data = {
'DateTime': ['18:12:17', '18:12:05', '18:11:59', '18:11:52', '18:11:42'],
'value_num1': [84.4937, 84.5038, 84.5247, 84.5386, 84.552],
'value_num2': [84.49000, 84.47000, 84.49000, 84.52000, 84.51000]
}
df = pd.DataFrame(data)
# Convert DateTime string to datetime format.
df['DateTime'] = pd.to_datetime(df['DateTime'],format= '%H:%M:%S' ).dt.time
fig = px.line(df, x='DateTime', y=['value_num1', 'value_num2'])
fig.update_layout(
xaxis = dict(autorange="reversed")
)
fig.show()