【发布时间】:2020-06-16 21:28:27
【问题描述】:
对不起,我是 plotly 的新手。
我有一个清晰的 pd.DataFrame,其中包含按顺序排列的日期。
初始日期采用以下格式:YYYYMMDD。
当我尝试转换它时,plotly 会将日期显示为我只能描述为随机数(在悬停文本中)。经过大量搜索后,我发现我的解决方法(参见代码)是唯一的解决方案。
但真正的问题是:如您所见,每个月都有不同数量的条目。当我放弃这一天时,将一个月的所有条目放在同一个位置。
当我使用 x=df.index 时,我得到了最好的结果,但我没有日期的可视化。
我想要的是每个条目之间有均匀的间隔,并有一个清晰的视觉提示,显示哪个条目属于哪个月份。
我将在帖子末尾附加一张图片以更好地解释我的问题(英语不是我的第一语言..)
代码:
import pandas as pd
import plotly.express as px
columns = ["date", "farts"]
df = pd.read_csv('test.csv', sep=',', engine='python', names=columns)
# Using a smaller made up csv file for testing. It looks like this:
# 20200119, 50
# 20200115, 40
# 20200105, 30
# 20191215, 40
# 20191120, 35
# 20191115, 12
print(df)
df["date"] = pd.to_datetime(df["date"], format="%Y%m%d")
df["date"] = df["date"].dt.strftime('%Y-%m')
print(df)
#works very well so far:
# before:
# date farts
# 0 20200119 50
# 1 20200115 40
# 2 20200105 30
# 3 20191215 40
# 4 20191120 35
# 5 20191115 12
# after:
# date farts
# 0 2020/01 50
# 1 2020/01 40
# 2 2020/01 30
# 3 2019/12 40
# 4 2019/11 35
# 5 2019/11 12
fig = px.bar(df, x="date", y='farts', width=1000, height=350)
fig.show()
你们有什么想法我可以做些什么来获得更好看的图表吗?
图片帮助理解: https://i.imgur.com/3Vi9xFi.png
编辑:尝试了一下,我越来越沮丧。要么不显示,要么日期反转,等等......
如果我选择 df["date"],我无法停止将同一个月的条目集中到一个地方。
如果我使用 df.index,我似乎无法根据日期列命名 x 轴条目。
【问题讨论】:
-
如果在图表前执行
pd.set_index('date')会发生什么?