我正在尝试使用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()
如您所见,线的起点和终点是图的起点和终点。 我要实现的目标是在折线图的起点和终点留出一些空间,如下所示。
我尝试使用ax3.margins(x=0.1)
设置x边距,但是它没有任何作用。
如何在图表的开头和结尾添加一些空间,以免线条不粘到边缘?
答案 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()