x轴的熊猫matplotlib边距

时间:2019-01-30 08:30:54

标签: python pandas matplotlib

我正在尝试使用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边距,但是它没有任何作用。

如何在图表的开头和结尾添加一些空间,以免线条不粘到边缘?

1 个答案:

答案 0 :(得分:2)

在pandas 0.23中,您将获得具有所需边距的正确图,但没有标签。该“错误”似乎已在熊猫0.24中修复,以另一种不良行为为代价。

也就是说,pandas修复了分类图的限制,并将刻度标签设置为在不更改限制的情况下看起来正确的位置。从理论上讲,您可以取消限制(ax.set_xlim(None, None)并让轴自动缩放(ax.autoscale()),但结果将是标记错误的图形。
我怀疑这背后是否有任何原因,这是对熊猫资源的疏忽。 This pandas issue最能说明问题,然后归结为this 5 year old issue

无论如何,对于分类图,请考虑直接使用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