Bar函数--Matplotlib

1. 中文显示问题

使用bar绘制柱状图的过程中涉及到中文字体的显示问题
使用参数配置方法,指定了中文黑体

import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']

换成中文字体之后又会遇到负号无法正常显示的情况,因此增加了第二行配置

mpl.rcParams['axes.unicode_minus'] = False

先来看下如果没有上面两行参数的情况
可以看到中文无法正常显示:
在这里插入图片描述
增加

mpl.rcParams['font.sans-serif'] = ['SimHei'] 

之后,看到负号无法正常显示
在这里插入图片描述

于是增加了第二行代码

mpl.rcParams['axes.unicode_minus'] = False

然后中文与负号可以正常输出:
在这里插入图片描述

2.绘制柱状图

2.1 函数功能

Make a bar plot: 绘制柱形图

柱体以给定的对齐方式(align)放在x处,柱的大小通过高度(height)和宽度(width)指定,起始绘制位置通过bottom(默认0的位置)参数指定。许多参数可以采用两种方式赋值:一是对所有柱体赋予同一个值;二是传入一系列值,每个柱子一个单独的值。

2.2 函数语法

bar(x, height, width=0.8, bottom=None, *, align=‘center’, data=None, **kwargs)

2.3 函数参数

参数含义
X柱体放置的x轴坐标, 浮点型或类数组对象
height柱体高度,浮点型或类数组对象
width柱体宽度,浮点型或类数组对象,默认为浮点型取值0.8
bottom柱体y轴的起始位置,浮点型或类数组对象,默认为浮点型取值0
align柱体与横轴坐标X的对齐方式,取值为:center:柱体中间与横轴坐标x对齐;edge:柱体左边与横轴坐标x对齐;若想要柱体右边与横轴坐标x对齐,可将width参数设置为负值
color柱体颜色,取值为单个颜色或者颜色列表,当为颜色列表时,柱状图将循环使用给定颜色
edgecolor柱体的边界颜色
tick_label柱体的刻度标签,默认使用给定的数字标签
hatch柱体内部的填充形状

2.3 实践示例

2.3.1 参数:x、y

在这里插入图片描述
这里的参数x是横轴坐标,默认使用数字标签,柱形的高度由参数height控制,也就是代码中的y值

2.3.2 参数:tick_label

使用tick_label参数对横坐标重新命名:命名为 [‘q’, ‘a’, ‘c’, ‘e’, ‘r’, ‘j’, ‘b’, ‘p’],使用tick_label参数
能够实现与xticks()函数相同的效果

在这里插入图片描述

2.3.3 参数:color

使用color参数修改柱形图填充颜色
使用同一种颜色填充各个柱子
在这里插入图片描述
使用不同颜色填充各个柱子

在这里插入图片描述

2.3.4 参数:align

使用align参数 设置横坐标的位置,默认中间
在这里插入图片描述
align = ‘edge’展示在左边缘
在这里插入图片描述
设置align在右边缘,需要同时设置width参数为负值且align为edge
在这里插入图片描述

2.3.5 参数:edgecolor

使用edgecolor设置柱子的边缘线颜色
在这里插入图片描述

2.3.5 参数:linewidth

使用linewidth参数设置边缘线的宽度
在这里插入图片描述

2.3.6 参数:hatch

使用hatch参数在柱子矩形内部填充。
hatch = ‘/’
在这里插入图片描述
hatch =‘o’
在这里插入图片描述
完整代码附下:

# 绘制柱形图

# 导入第三方数据库
import matplotlib as mpl
import matplotlib.pyplot as plt

# 修改字体以显示中文并解决负号不能正常显示问题
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 产生数据
x = [1, 2, 3, 4, 5, 6, 7, 8]
y = [3, 1, 4, 5, 8, 9, 7, 2]

# 1. 绘制柱形图
plt.bar(x, y)

#  2. 使用 tick_label 参数对横坐标重新命名
plt.bar(x, y, tick_label=['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'])

# 3. 修改柱形图填充颜色
# 3.1 使用同一种颜色填充各个柱子
plt.bar(x, y, tick_label=['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'], color='cyan')
# 3.2 使用不同颜色填充各个柱子
plt.bar(x, y, tick_label=['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'],
        color=['red','yellow','green','cyan','blue','purple', 'brown','pink'])


# 4. 使用align参数 设置横坐标的位置,默认中间
# 4.1 设置横坐标在中间
# 参数align = 'center'
plt.bar(x, y, tick_label=['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'],
        color=['brown'], align='edge')
# 4.2 设置横坐标在左边缘
# 参数align = 'edge'
plt.bar(x, y, tick_label=['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'],
        color=['brown'], align='edge')
# 4.3 设置横坐标在右边缘
# 参数align = 'edge' 且 width为负值
plt.bar(x, y, tick_label=['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'],
        color=['brown'], width=-0.8, align='edge')

# 5. 设置柱子边缘线颜色
plt.bar(x, y, tick_label=['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'],
        color=['brown'], edgecolor='green')

# 6. 使用linewidth参数设置柱子边宽度
plt.bar(x, y, tick_label=['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'],
        color=['brown'], edgecolor='green', linewidth=2)

# 7. 使用hatch参数设置柱子内部填充镶嵌
plt.bar(x, y, tick_label=['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'],
        color=['brown'], edgecolor='green', linewidth=2, hatch='/')

plt.title('柱形图')

plt.show()

另:x为柱形的x轴坐标,因此,如果x的浮点数没有按照顺序来排列,则出来的结果也不会按照x列表的顺序展示,而是会对应到相应的坐标位置。图中柱形图并没有按照x的列表顺序 [3, 1, 4, 5, 8, 9, 7, 2]来从左向右依次展示,而是按照x坐标先后的顺序进行,没有x=6的值,则相应位置显示空白。
在这里插入图片描述

2.3.7 参数:bottom

参数 b o t t o m bottom bottom:设置各柱体的底部从哪个值开始,默认从0开始
在这里插入图片描述
参数 b o t t o m = 3 bottom=3 bottom=3,图形底部从3开始
在这里插入图片描述
参数 b o t t o m bottom bottom为与柱子相同数量的数组,柱子向上移动想用的高度
在这里插入图片描述

参考文献:
[1] https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.bar.html

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值