python - 使用 python 和 matplotlib 获取打印在条形图顶部的值?
问题描述
我正在尝试使用条形顶部的值打印该图,该值将根据图表自动更改。我正在使用以下代码:
import pandas as pd
import matplotlib.pyplot as plt
hsif = pd.read_excel('C:\\Users\\ans\\Desktop\\test.xlsx')
class_sum = hsif.groupby('Class')['Value'].sum()
class_sum_sort = class_sum.sort_values(ascending=False)
ax = class_sum_sort.plot.barh(x='Class',y=class_sum_sort).invert_yaxis()
plt.title('My Dynamic Graphs')
plt.xlabel('Value',fontsize=20)
plt.ylabel('Class',fontsize=20)
plt.show()
使用包含数据的excel文件为:
+----------+---------+
| Class | Value |
+----------+---------+
| Six | 3763 |
| Six | 2570 |
| Six | 1123 |
| Six | 901 |
| Seven | 12210 |
| Seven | 10384 |
| Seven | 3188 |
| Seven | 2592 |
| Seven | 1723 |
| Seven | 1011 |
+----------+---------+
我们可以添加特定于Six
橙色和Seven
红色的颜色吗?谁可以帮我这个事?
解决方案
您可以遍历条并设置文本和颜色。
import pandas as pd
import matplotlib.pyplot as plt
hsif = pd.read_excel('C:\\Users\\ans\\Desktop\\test.xlsx')
class_sum = hsif.groupby('Class')['Value'].sum()
class_sum_sort = class_sum.sort_values(ascending=False)
ax = class_sum_sort.plot(kind="barh", fontsize=13)
ax.set_title('My Dynamic Graphs')
ax.set_xlabel('Value', fontsize=20)
ax.set_ylabel('Class', fontsize=20)
for i in ax.patches:
ax.text(i.get_width(), i.get_y()+.3, str(i.get_width()), fontsize=13)
ax.patches[0].set_color("red")
ax.patches[1].set_color("orange")
ax.invert_yaxis()
plt.tight_layout()
plt.show()
推荐阅读
- javascript - 如何在代码(node.js)中处理“进程内存不足后返回的 API 致命错误处理程序”?
- javascript - 在执行上下文的创建阶段如何加载 javascript 对象和 javascript 函数?
- ios - 如何在 iOS 中创建一个旋转的彩虹色圈
- php - ErrorException (E_WARNING) 非法字符串偏移 'customerid'
- mysql - 元数据库中的本机和 SQL 查询
- spring-boot - 无法从 Kubernetes 中的另一个服务访问 Spring Boot 后端服务
- html - 在创建 div 时使 Loading div 可访问
- python - 正切 x 的反正切没有精确计算
- node.js - .gitignore 如何忽略文件夹而不是子文件夹
- http - 在 Tcl 中使用 http::geturl 的文件上传问题包含 http-2.9 包