python - Python水平条不显示时间戳数据的整个范围
问题描述
我想使用 pyplot 绘制数据可用性。我从@vestland 获得了代码。我的月度数据在这里。
一般来说,数据跨度从 2009 年 1 月到 2019 年 1 月。每个变量都有自己的时间段。
下面是代码。
import pandas as pd
import plotly.express as px
path = r'C:\Users\....\availability3.txt'
df = pd.read_csv(path)
df = df.drop(['Unnamed: 0'], axis=1)
fig = px.bar(df, x="Timestamp", y="variable", color='value', orientation='h',
hover_data=["Timestamp"],
height=300,
color_continuous_scale=['firebrick', '#2ca02c'],
title='Data Availabiltiy Plot',
template='plotly_white',
)
fig.update_layout(yaxis=dict(title=''),
xaxis=dict(
title='',
showgrid=True,
gridcolor='white',
tickvals=[]
)
)
fig.show()
正如您在下面看到的,该图仅显示第一天数据的第一行。
我想要的是用相应的值和颜色在 x 轴上显示整个数据范围。结果应显示 2009 年 1 月至 2019 年 1 月的数据,变量值 0 显示为红色,1 显示为绿色。
也许这是时间戳的问题,因为使用数字索引时,情节还可以。
编辑
通过删除数据集中的重复项并将时间戳设置为索引,我得到了几乎预期的结果。这是新代码。
fig = px.bar(df, y="variable", color='value', orientation='h',
hover_data=[df.index],
height=300,
color_continuous_scale=['firebrick', '#2ca02c'],
title='Data Availabiltiy Plot',
template='plotly_white',
)
现在整个时间跨度都按预期显示。但是 x 轴时间戳的值尚未显示。我会在另一个帖子中问
解决方案
我检查了文档plotly.express.bar
并简要使用了您的代码。您的数据可能一个一个堆叠在一起。
设置orientation='v'
显示了所有数据,但不是以任何特别直观的方式,尽管我相信它确实回答了你提出的问题。是的,所有的数据Alice, Thalia, Citra, and Pebaru
都存在,但y-axis
需要修改以获得正确的标签:
或者,在悬停时设置orientation='h'
并barmode='overlay'
显示所有数据,但不是单独的条形。您可以在条的右边缘看到叠加模糊:
plotly.express.bar
文档中 有很多参数: https ://plot.ly/python-api-reference/generated/plotly.express.bar.html#plotly.express.bar 。试验一下,看看你能想出什么。
编辑:
1)x-axis
使用列独立设置Timeframe
。
2).groupby()
与 上的平均功能一起使用value
。
推荐阅读
- php - 通过它们在 PHP 中的重复值组合两个数组数组并合并值 - 逗号分隔
- windbg - 如何摆脱符号文件相关的警告/错误消息
- docker-compose - 如何使用 Rancher v2 生成 docker-compose.yml?
- spotfire - HH:mi:ss 数据上的聚合“总和”
- python - 从熊猫数据框中删除停用词
- logging - 显示包含控制字符的文本文件的最终外观
- angular - 如何将表格的主体移动到另一个组件中,这样它就不会破坏样式
- linux - 所有用户在脚本内执行 cupsenable 而不提示输入密码
- java - 在 websphere 8.5.5.14 中启动我的应用程序时出现异常
- python - 在 python 中制作一个 keras 模型的深拷贝