利用matplotlib绘制柱状图
柱状图是一种用矩形柱来表示数据分类的图表,柱状图可以垂直绘制,也可以水平绘制,它的高度与其所表示的数值成正比关系。柱状图显示了不同类别之间的比较关系,图表的水平轴 X 指定被比较的类别,垂直轴 Y 则表示具体的类别值。
绘制柱状图的命令为:
bar()
1.简单柱状图绘制
下面从建造一个简单的柱状图开始,代码如下
import matplotlib.pyplot as plt
data = [5, 20, 15, 25, 10]
plt.bar(range(len(data)), data)
plt.show() # 显示图形
2.修改x轴的标签
假设数据为选课的学生人数,那么横轴就是每个科目(subject),我们可以通过如下方式修改x轴的标签(数学(math),语文(language),英语(english),体育(sport),政治(politics))。
import matplotlib.pyplot as plt
data = [5, 10, 20, 15, 25]
subject = ['math', 'language', 'english', 'sports', 'politics']
plt.bar(subject, data)
plt.show()
也可以通过xticks函数修改,参考下方绘制并列柱状图例子。
3.设置柱体颜色
(1)一次性改变一个颜色
通过 facecolor(fc) 参数可以设置柱体颜色,比如将柱体设置成红色:
import matplotlib.pyplot as plt
data = [5, 10, 20, 15, 25]
subject = ['math', 'language', 'english', 'sports', 'politics']
plt.bar(subject, data, fc='r')
plt.show()
(2)一次性改变多个颜色
也可以通过 color 参数一次性设置多个颜色
import matplotlib.pyplot as plt
data = [5, 10, 20, 15, 25]
subject = ['math', 'language', 'english', 'sports', 'politics']
plt.bar(subject, data, color=['r', 'b', 'y']) # 目前pyhton3.9版本不支持写成{color=’rby‘}
plt.show()
4.柱状图的美化
(1)柱状图内部填充
hatch='' 可设置填充图案,如/,-,+,o,O,.等
import matplotlib.pyplot as plt
data = [5, 10, 20, 15, 25]
subject = ['math', 'language', 'english', 'sports', 'politics']
plt.bar(subject, data, color=['r', 'b', 'y'], hatch='/')
plt.show()
(2)添加柱状图的边框
相关的关键字参数为:edgecolor (ec),linestyle ( ls),linewidth (lw)
import matplotlib.pyplot as plt
data = [5, 10, 20, 15, 25]
subject = ['math', 'language', 'english', 'sports', 'politics']
plt.bar(subject, data, color=['r', 'b', 'y'], hatch='/', ec='g', ls='-', lw=5)
plt.show()
ec参数选择边框颜色,ls参数选择边框样式,lw参数调整边框宽度。
5.绘制并列柱状图
主要需要控制好每个柱之间的距离,比如:
import numpy as np
import matplotlib.pyplot as plt # 导入所需库
# 导入数据
x = np.arange(5)
x1 = [59, 82, 75, 65, 72]
x2 = [68, 82, 77, 89, 61]
x3 = [90, 71, 86, 53, 62]
# 设置所需参数
total_width, n = 0.8, 3 # (柱状图的默认宽度值为 0.8)
width = total_width / n
x = x - (total_width - width) / 2 # 现在的x是每个并列柱的第一柱的中心横坐标
# 绘制图
plt.bar(x, x1, width=width, label='language', fc='b')
plt.bar(x + width, x2, width=width, label='math', fc='r')
plt.bar(x + 2 * width, x3, width=width, label='english', fc='y')
plt.xticks(np.arange(5), ['tom', 'jack', 'bob', 'jone', 'lucy']) # 将横坐标修改为学生姓名
plt.legend() # 添加图例
plt.show()
也可以通过
plt.ylabel('') # 添加y轴标签
plt.title('') # 添加图标题
进而完善图形,这里就不进行演示了
6.绘制堆叠柱状图
可以通过 bottom 参数绘制堆叠柱状图。文章来源:https://www.toymoban.com/news/detail-484252.html
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(3)
x1 = np.random.random(3)
x2 = np.random.random(3)
# 中文乱码处理
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 坐标轴负号处理
plt.rcParams['axes.unicode_minus'] = False
plt.bar(x, x1, label='语文')
plt.bar(x, x2, bottom=x1, label='数学')
plt.legend()
plt.show()
7.绘制条形图
barh方法绘制条形图,其剩余画图方法与柱状图类似文章来源地址https://www.toymoban.com/news/detail-484252.html
import matplotlib.pyplot as plt
data = [36, 27, 15, 29, 10]
plt.barh(range(len(data)), data)
plt.show()
到了这里,关于Matplotlib绘制柱状图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!