pandas matplotlib带x轴的边距

2024-09-27 20:20:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用pandas数据帧和matplotlib创建折线图。我正在使用下面的代码创建折线图。在

import pandas as pd
import matplotlib.pyplot as plt

data = {
    'Quarter': ['Q1-2018', 'Q2-2018', 'Q3-2018', 'Q4-2018', 'Q1-2019'],
    'Data': [256339, 265555, 274880, 211128, 0]
}
dataset2 = pd.DataFrame(data=data)
ax3 = dataset2[['Quarter', 'Data']].plot.line(x='Quarter', y='Data', 
legend=False)
ax3.margins(x=0.1)
plt.show()

从而产生以下结果 enter image description here

如您所见,线的起点和终点是在绘图的边缘开始和结束的。 我要做的是在下面的折线图的开始和结束处有一些空间。 enter image description here

我尝试使用ax3.margins(x=0.1)来设置x边距,但它没有做任何事情。在

如何在图表的开始和结束处添加一些空间,以使线条不粘在边上?在


Tags: importpandasdatamatplotlibas空间pltpd
1条回答
网友
1楼 · 发布于 2024-09-27 20:20:17

在pandas 0.23中,您将得到正确的绘图,并根据需要添加边距,但没有标签。这种“臭虫”似乎已经在0.24熊猫身上得到了修复,代价是另一种不受欢迎的行为。在

也就是说,pandas修正了分类图的限制,并将ticklabel设置到了如果不改变限制的话看起来是正确的位置。虽然理论上可以取消限制(ax.set_xlim(None, None))并让轴自动缩放(ax.autoscale()),但结果将是一个标记错误的绘图。
我怀疑这背后有什么理由,这是熊猫来源的疏忽。This pandas issue最好地描述了这个问题,然后归结为{a2}。在

无论如何,对于分类图,可以考虑直接使用matplotlib。它的分类功能目前已经相当稳定,并且易于使用:

import pandas as pd
import matplotlib.pyplot as plt

data = {
    'Quarter': ['Q1-2018', 'Q2-2018', 'Q3-2018', 'Q4-2018', 'Q1-2019'],
    'Data': [1,3,2,4,1]
}
df = pd.DataFrame(data=data)

plt.plot("Quarter", "Data", data=df)

plt.show()

enter image description here

相关问题 更多 >

    热门问题