stacked barh plot
时间: 2023-05-04 15:05:40 浏览: 49
堆叠条形图(stacked barh plot)是一种二维绘图方法,在此图表中,条形被堆叠在一起,每个条形代表一个类别,每个堆叠层代表一个子类别。堆叠条形图最常见的应用是用于显示数据的组成部分和比例。通常情况下,所有的条形应该归一化,以便每个子类别的比例能够清晰地反映出来。
堆叠条形图可以水平或垂直绘制,通常水平方向用于比较类别之间的数据,垂直方向用于比较一个类别内的子类别数据。对于每个类别,堆叠条形图的高度或宽度表示该类别的总值,堆叠层中的颜色表示子类别的比例。
堆叠条形图的优点是可以清晰地展示每个类别中的不同子类别之间的比例关系,也可以较为直观地呈现类别间的比较。但是,当堆叠层数过多时,图形变得复杂,难以分辨。因此,在使用堆叠条形图时需要谨慎选择图形的呈现方式,以保证读者能够正确理解数据的含义。
相关问题
p_percent.plot(x = 'newgroup', kind='barh',stacked = True,mark_right = True,figsize=(16,8)) df_rel=p_percent[p_percent.columns[1:]]--------------------------------------------------------------------------- NameError Traceback (most recent call last) Cell In[128], line 1 ----> 1 p_percent.plot(x = 'newgroup', kind='barh',stacked = True,mark_right = True,figsize=(16,8)) 2 df_rel=p_percent[p_percent.columns[1:]] NameError: name 'p_percent' is not defined
这个错误提示显示 `p_percent` 未定义,说明在这段代码之前没有定义 `p_percent` 变量。你需要检查一下你的代码,确保 `p_percent` 变量已经被正确地定义和赋值。如果你之前确实没有定义 `p_percent`,你需要先对数据进行处理,得到一个类似于 `p_percent` 的数据框,然后再使用上述代码进行绘图和计算。
把上面那个图的横坐标翻转90度
要将上面的条形图的横坐标翻转 90 度,可以使用 `barh()` 函数绘制水平条形图。修改代码如下:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'Grade': [1, 2, 2, 3, 3],
'Internet Time': ['<1 hour', '1-2 hours', '2-3 hours', '3-4 hours', '>4 hours']}
df = pd.DataFrame(data)
# 按年级和上网时间段分组,并统计人数
grouped = df.groupby(['Grade', 'Internet Time'])['Name'].count()
# 重塑数据,以年级为行,上网时间段为列,人数为值
grouped = grouped.unstack()
# 绘制水平条形图
grouped.plot(kind='barh', stacked=True)
# 设置坐标轴标签和图例
plt.xlabel('Count')
plt.ylabel('Grade')
plt.legend(title='Internet Time', loc='lower right')
# 显示图形
plt.show()
```
这段代码与前面的代码相比,唯一的区别在于绘制条形图的函数从 `plot(kind='bar', stacked=True)` 改为了 `plot(kind='barh', stacked=True)`,并且横轴和纵轴的标签也交换了位置。