【发布时间】:2020-09-19 09:12:18
【问题描述】:
我有一个包含两列的数据框 (df):“基础类型”,它有 4 种基础类型(轴、桩、组合、展开),另一列“Vs30”具有不同的参数 Vs30 值。每行代表一座桥梁,具有一种基础类型和一个 Vs30 值。
首先,我在 df 中创建一个新列“binVs30”,将“Vs30”的每个元素转换为不同的 bin,其中有 5 种不同的范围([0-200]、[200-400]...[ 800-1000])。
df['binVs30'] = pd.cut(df.Vs30, bins=np.arange(0, 1100, 200))
然后,我创建了一个堆叠面积图,代码如下:
color_table = pd.crosstab(df['binVs30'], df['Foundation Type'], dropna=False)
ax = color_table.plot(kind='area', figsize=(8, 8), stacked=True, rot=0)
display(ax)
plt.xlabel('')
plt.ylabel('Frequency', fontsize=12)
plt.legend(title='Foundation Type', loc='upper right')
plt.title('Column Database', fontsize='20')
plt.show()
生成的图片显示了一些不应该存在的额外垃圾箱。因此,我不得不通过手动添加以下代码来修复 xticks:
locs, labels = plt.xticks()
plt.xticks(locs, ['','0-200','','200-400','','400-600','','600-800','','800-1000'], fontsize=10, rotation=45)
Python 创建那些不应该存在的额外垃圾箱是否有原因?这是 Python 的错误吗?因为如果我将其更改为堆积条形图,问题就消失了。有没有办法通过不手动添加bin代码来修复它?
另外两个问题是,如何为区域图添加边缘颜色?比如:
color_table.plot(kind='area', figsize=(8, 8), stacked=True, edgecolor='black', legend=None, rot=0)
命令 edgecolor='black' 在堆积面积图中不起作用。
而且,如果我想为“Vs30”创建 bin,例如 ([0-200],[200-400]...[>800])。有没有办法我可以做到这一点?由于我创建“binVs30”列的方式不允许我创建一个“>800”的 bin。
谢谢。
【问题讨论】:
标签: python pandas stacked-area-chart