我想在下面的条形图中修复2012年和2013年之间的差距。
我的数据框是
In [30]: df
Out[30]:
Pre-Release Post-Release
FinishDate
2008 1.0 0.0
2009 18.0 0.0
2010 96.0 0.0
2011 161.0 0.0
2012 157.0 0.0
2013 0.0 139.0
2014 0.0 155.0
2015 0.0 150.0
2016 0.0 91.0
2017 0.0 15.0
我正在使用df.plot(kind='bar', width=1)
进行绘图。
答案 0 :(得分:3)
图表中没有实际的“差距”:熊猫只是保留空间来绘制彼此相邻的两个不同的条形图。拿这段代码来说明:
from io import StringIO
import pandas as pd
TESTDATA=StringIO("""2008 1.0 0.0
2009 18.0 5.0
2010 96.0 0.0
2011 161.0 0.0
2012 157.0 0.0
2013 0.0 139.0
2014 0.0 155.0
2015 0.0 150.0
2016 0.0 91.0
2017 0.0 15.0""")
df=pd.read_csv(TESTDATA,delim_whitespace=True,index_col=0)
df.plot(kind='bar')
但是你实际上并不需要彼此相邻地打印两个条形图,因此您可以将两个系列绘制成相同的图形,而不是绘制数据框:
ax=df['1.0'].plot(kind='bar')
df['0.0'].plot(kind='bar',ax=ax,color='orange')
或者只使用:
df.plot(kind='bar', stacked=True)
在这种情况下,你会得到相同的结果。
答案 1 :(得分:1)
差距实际上通常是想要的行为,因为你在这里有效地绘制两个直方图。
然而,在这种情况下,报告的值似乎是独占的,因此不需要并排绘制直方图,而只需绘制一个,然后绘制另一个。
这是一个可以帮助你的最小例子:
import matplotlib.pyplot as plt
import numpy as np
import pandas
someDF = pandas.DataFrame({'1':np.random.uniform(size=20)*10, '2':np.random.uniform(size=20)*10})
cut = 10
fig, ax = plt.subplots(figsize=(8,3))
first = someDF['1'][someDF.index >= cut]
second = someDF['2'][someDF.index < cut]
ax.bar(left=first.index, height=first, align='center', color='blue')
ax.bar(left=second.index, height=second, align='center', color='red')
plt.show()
答案 2 :(得分:1)
您每年绘制两个数据集。因此,在x轴上的每个节点处,绘制了两个数据集的两个条。您无法看到它们,因为值为零。我认为关键字stacked=True
可能有效。这会垂直堆叠两个数据集,不显示间隙。