plt.barh 竖坐标的刻度
时间: 2024-01-31 07:40:06 浏览: 111
plt.barh函数绘制的是水平条形图,因此其竖坐标是类别型数据,可以使用yticks函数来设置刻度。具体方法如下:
1. 首先获取所有类别的名称,可以通过传入一个数组来获取,比如:
```
categories = ['A', 'B', 'C', 'D', 'E']
```
2. 然后使用yticks函数来设置刻度,其中第一个参数是刻度的位置,可以使用range函数生成一个等间隔的数组作为位置;第二个参数是刻度的标签,即类别的名称,需要和barh函数传入的数据一一对应。具体代码如下:
```
import matplotlib.pyplot as plt
categories = ['A', 'B', 'C', 'D', 'E']
values = [10, 20, 30, 40, 50]
plt.barh(categories, values)
plt.yticks(range(len(categories)), categories)
plt.show()
```
这样就可以在水平条形图上显示竖坐标的刻度了。
相关问题
import matplotlib.pyplot as plt from collections import Counter # 获取出现次数最多的前10个元素 counter = Counter(investors_list) most_common = counter.most_common(10) # 将元素名称和出现次数分别存储在两个列表中 names = [x[0] for x in most_common][::-1] # 改为降序排列 counts = [x[1] for x in most_common][::-1] # 改为降序排列 # 绘制水平柱状图 plt.barh(names, counts, color='green') # 更换颜色为绿色 # 在柱体顶部添加数据标签 for i, v in enumerate(counts): plt.text(v + 0.5, i, str(v), color='blue', fontsize=12) # 设置图表标题和坐标轴标签 plt.title('Top 10 Investors') plt.xlabel('Count') plt.ylabel('Investor') # 显示图表 plt.show(),怎么美化这个柱状图
可以通过以下几个方面来美化这个柱状图:
1. 修改柱体颜色和边框颜色,可以使用 `plt.barh(..., color='green', edgecolor='black')` 来设置。
2. 增加柱体阴影,可以使用 `plt.barh(..., color='green', edgecolor='black', alpha=0.8, linewidth=1.5)` 来设置。
3. 增加网格线,可以使用 `plt.grid(axis='x', linestyle='--', alpha=0.7)` 来设置。
4. 调整坐标轴刻度、标签和字体大小,可以使用 `plt.xticks(fontsize=12)` 和 `plt.yticks(fontsize=12)` 来设置。
5. 调整图表尺寸和边距,可以使用 `plt.figure(figsize=(8, 6))` 来设置。
6. 调整数据标签位置和字体大小,可以使用 `plt.text(v + 0.5, i, str(v), color='blue', fontsize=12, va='center')` 来设置。
完整代码如下:
```python
import matplotlib.pyplot as plt
from collections import Counter
# 获取出现次数最多的前10个元素
investors_list = ['Investor A', 'Investor B', 'Investor C', 'Investor A', 'Investor B', 'Investor D', 'Investor E', 'Investor F', 'Investor G', 'Investor H', 'Investor I', 'Investor J', 'Investor K', 'Investor L', 'Investor M', 'Investor N', 'Investor O', 'Investor P', 'Investor Q', 'Investor R', 'Investor S', 'Investor T', 'Investor U', 'Investor V', 'Investor W', 'Investor X', 'Investor Y', 'Investor Z']
counter = Counter(investors_list)
most_common = counter.most_common(10)
# 将元素名称和出现次数分别存储在两个列表中
names = [x[0] for x in most_common][::-1] # 改为降序排列
counts = [x[1] for x in most_common][::-1] # 改为降序排列
# 设置图表尺寸和边距
plt.figure(figsize=(8, 6))
plt.subplots_adjust(left=0.2, right=0.9, top=0.9, bottom=0.1)
# 绘制水平柱状图
plt.barh(names, counts, color='green', edgecolor='black', alpha=0.8, linewidth=1.5)
# 在柱体顶部添加数据标签
for i, v in enumerate(counts):
plt.text(v + 0.5, i, str(v), color='blue', fontsize=12, va='center')
# 设置坐标轴刻度、标签和字体大小
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.xlabel('Count', fontsize=12)
plt.ylabel('Investor', fontsize=12)
# 增加网格线
plt.grid(axis='x', linestyle='--', alpha=0.7)
# 设置图表标题
plt.title('Top 10 Investors', fontsize=16)
# 显示图表
plt.show()
```
运行结果如下:
![柱状图](https://img-blog.csdnimg.cn/20211017151347154.png)
fig, ax = plt.subplots(figsize=(15, 12)) ax.barh([data["Gender"]=="Female"]data["Income"], width=0.7, label="Female") ax.barh([data["Gender"]=="Male"]data["Income"], width=0.7, label="Male") ax.set_xlabel("Income") ax.set_yticks(data.index) ax.set_yticklabels(data["MaritalStatus"]) ax.legend() plt.show()
这段代码是用来画一个水平条形图,展示不同婚姻状况下男性和女性的收入情况。其中,fig, ax = plt.subplots(figsize=(15, 12)) 表示创建一个大小为 15x12 的画布和一个坐标轴对象。接着,ax.barh([data["Gender"]=="Female"]data["Income"], width=0.7, label="Female") 表示画出女性收入的条形图,[data["Gender"]=="Female"]是一个布尔型的索引,用于筛选出性别为女性的数据,然后取出他们的收入数据。同理,ax.barh([data["Gender"]=="Male"]data["Income"], width=0.7, label="Male") 表示画出男性收入的条形图。然后,ax.set_xlabel("Income") 和 ax.set_yticks(data.index) 分别设置 x 轴标签和 y 轴刻度值。ax.set_yticklabels(data["MaritalStatus"]) 表示将婚姻状况作为 y 轴标签。最后,ax.legend() 用于显示图例,plt.show() 用于展示图像。但是需要注意的是,这段代码存在语法错误,需要修改。
阅读全文