python画柱状图--不同颜色并显示数值的方法
作者:超屌的温jay 时间:2021-12-31 17:22:18
用python画柱状图容易,但是如何对不同柱子使用不同颜色呢?同时在柱子顶端显示精确数值?
主要用的方法为:
atplotlib.pyplot.bar(left, height, width=0.8, bottom=None, hold=None, data=None, **kwargs)
参数说明:
left: 每一个柱形左侧的X坐标
height:每一个柱形的高度
width: 柱形之间的宽度
bottom: 柱形的Y坐标
color: 柱形的颜色
下面是代码示例(首先请先安装numpy以及matplotlib包):
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
X = [0.5]
XX=[1.5]
Y = [20]
YY=[23]
#fig = plt.figure()
plt.bar(X, Y, 1, color="blue")
plt.bar(XX,YY,1,color="yellow") #使用不同颜色
plt.xlabel("X-axis") #设置X轴Y轴名称
plt.ylabel("Y-axis")
plt.title("bar chart")
#使用text显示数值
for a,b in zip(X,Y):
plt.text(a, b+0.05, '%.0f' % b, ha='center', va= 'bottom',fontsize=11)
for a,b in zip(XX,YY):
plt.text(a, b+0.05, '%.0f' % b, ha='center', va= 'bottom',fontsize=11)
plt.ylim(0,37) #设置Y轴上下限
plt.show()
得到的图形如下:
首先,前边设置的x、y值其实就代表了不同柱子在图形中的位置(坐标),通过for循环找到每一个x、y值的相应坐标——a、b,再使用plt.text在对应位置添文字说明来生成相应的数字标签,而for循环也保证了每一个柱子都有标签。
其中,a, b+0.05表示在每一柱子对应x值、y值上方0.05处标注文字说明, '%.0f' % b,代表标注的文字,即每个柱子对应的y值, ha='center', va= 'bottom'代表horizontalalignment(水平对齐)、verticalalignment(垂直对齐)的方式,fontsize则是文字大小。
来源:https://blog.csdn.net/wenqiwenqi123/article/details/77451653
标签:python,柱状图,数值
0
投稿
猜你喜欢
XML卷之实战锦囊(1):动态排序
2008-09-05 17:20:00
sqlserver 系统存储过程 中文说明
2024-01-18 12:22:14
Vue3 组件库的环境配置搭建过程
2024-04-30 10:19:58
mysql数据库忘记管理员密码的解决方法
2024-01-24 10:56:55
MySQL窗口函数实现榜单排名
2024-01-16 20:22:22
Python列表排序方法reverse、sort、sorted详解
2022-01-06 22:16:39
Python中三个不可思议的返回功能分享
2021-11-21 07:32:41
php事务处理实例详解
2024-05-13 09:25:30
千万级用户系统SQL调优实战分享
2024-01-18 04:25:04
浅谈Oracle数据库的建模与设计
2010-07-20 12:55:00
PHP程序员最常犯的11个MySQL错误
2012-01-05 19:13:02
SQL提供的进行数据传输的实用程序—BCP
2009-01-23 13:45:00
微信支付、支付宝支付等常用第三方支付通道接口手续费对比
2022-01-29 12:48:14
js+css实现select的美化效果
2024-04-16 09:52:25
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2023-02-19 14:09:08
java使用mysql预编译语句查询优势及示例详解
2024-01-13 21:15:00
js中的window.open返回object的错误的解决方法
2024-04-17 09:52:27
什么是用户体验优化(UEO)
2008-08-27 19:49:00
asp关键词屏蔽过滤函数代码
2010-05-04 16:32:00
Matlab如何实现矩阵复制扩充
2023-10-13 15:46:52