这似乎很简单,但我的生活我不能弄清楚它。
我是Python和Seaborn的新手,我在PythonAnywhere上在线做这一切。
我所要做的就是在seaborn中创建一个简单的条形图,在x轴上正确排列日期(即从左到右递增)。
当我尝试这个:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime
import pandas as pd
import seaborn as sns
emp = pd.DataFrame([[32, "5/31/2018"], [3, "2/28/2018"], [40, "11/30/2017"], [50, "8/31/2017"], [51, "5/31/2017"]],
columns=["jobs", "12monthsEnding"])
fig = plt.figure(figsize = (10,7))
sns.barplot(x = "12monthsEnding", y = "uniqueClientExits", data = emp,
estimator = sum, ci = None)
fig.autofmt_xdate()
plt.show()
我得到了这个:
Nice looking bar graph but with the dates ordered descending from left to right
然后当我尝试将对象转换为日期时间时:
(note:我在下面使用pd.to_datetime(),以便尝试和重新创建当我在pd.read_csv()中使用parse_dates时发生的情况,这就是我实际上如何创建框架。
emp = pd.DataFrame([[32, pd.to_datetime("5/31/2018")], [3, pd.to_datetime("2/28/2018")], [40, pd.to_datetime("11/30/2017")], [50, pd.to_datetime("8/31/2017")], [51, pd.to_datetime("5/31/2017")]],
columns=["jobs", "12monthsEnding"])
fig = plt.figure(figsize = (10,7))
sns.barplot(x = "12monthsEnding", y = "uniqueClientExits", data = emp,
estimator = sum, ci = None)
fig.autofmt_xdate()
plt.show()
我得到了这个:
Bar plot with the dates in the right order, but WRONG format
我得到了相同的条形图,日期顺序正确,但采用完整的长日期时间格式,带有时间等。但我想要的只是日期/月份/年份。
我已经搜索了stackoverflow两天了,没有任何效果。我开始怀疑部分原因是否是因为我正在使用PythonAnywhere。但我也找不到任何理由。
我快疯了。期待任何帮助。谢谢.
2条答案
按热度按时间mtb9vblg1#
使用第二种方法,只需将datetime值排序并重新格式化为
YYYY-MM-DD
,然后将值传递到set_xticklabels
。下面用随机的种子数据演示:要检查图形输出,请运行
groupby().sum()
:velaa5lx2#
正如Lopheam在评论中提到的,你可以去:
这会自动旋转日期,并将数字减少到刻度。