Python可视化学习-4条形图

4.1默认条形图

4.1.1代码

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
name = ['老大', '老二', '老三', '老四', '老五', '老六']# 创建一个包含六个类别的列表
np.random.seed(100) #设置随机种子为100。这确保了每次运行代码时,随机数序列都是一样的
N = len(name)# 获取name列表的长度,即名字的数量
math = np.random.randint(60, 100, N)# 使用random.randint函数生成N个随机整数,这些整数在60到99之间(包括60,但不包括100)


#绘制条形图
plt.figure(dpi=120) #分辨率为120
plt.bar(name, math, alpha=.7)#创建一个条形图,X轴是name列表中的名称,Y轴是数学列表中的数值,每个条形的颜色具有一定的透明度。
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号
plt.ylabel('数学成绩') #y坐标名称

#显示图表
plt.show()

4.1.2显示图表

4.2多子条形图

4.2.1方法一代码

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
name = ['老大', '老二', '老三', '老四', '老五', '老六']# 创建一个包含六个类别的列表
np.random.seed(100) #设置随机种子为100。这确保了每次运行代码时,随机数序列都是一样的
N = len(name)# 获取name列表的长度,即名字的数量
math = np.random.randint(60, 100, N)# 使用random.randint函数生成N个随机整数,这些整数在60到99之间(包括60,但不包括100)
physics = np.random.randint(60, 100, N) #物理成绩
biology = np.random.randint(60, 100, N) #生物成绩
chemistry = np.random.randint(60, 100, N) #化学成绩
rows = 2 # 定义网格的行数,表示有2行
columns = 2 # 定义网格的列数,表示会有2列
plt.figure(figsize=(12, 8), dpi=120) #创建一个新的图形,尺寸为12x8宽度为12,高度为8,分辨率为120 dpi。
grid = plt.GridSpec(rows, columns, wspace=.25, hspace=.25) # 创建一个网格布局
# GridSpec是matplotlib库中的一个类,用于创建网格布局
# wspace和hspace参数分别定义了网格列和行之间的间距,这里设置为0.25,表示列和行之间各有25%的间距

plt.subplot(grid[0]) #子图1
plt.bar(name, math, alpha=.7)#创建一个条形图,X轴是name列表中的名称,Y轴是数学列表中的数值,每个条形的颜色具有一定的透明度。
plt.ylabel('数学成绩')
plt.ylim(60, 100) #设置 y 轴的范围为从60到100

plt.subplot(grid[1]) #子图2
plt.bar(name, physics, alpha=.7)
plt.ylabel('物理成绩')
plt.ylim(60, 100)

plt.subplot(grid[2]) #子图3
plt.bar(name, biology, alpha=.7)
plt.ylabel('生物成绩')
plt.ylim(60, 100)

plt.subplot(grid[3]) #子图4
plt.bar(name, chemistry, alpha=.7)
plt.ylabel('化学成绩')
plt.ylim(60, 100)

plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号

#显示图表
plt.show()

 4.2.2方法一显示图表

 4.2.3方法二代码

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
name = ['老大', '老二', '老三', '老四', '老五', '老六']# 创建一个包含六个类别的列表
course_name = ['数学', '物理', '生物', '化学'] #创建课程类别的列表
N = len(name)# 获取name列表的长度,即名字的数量
rows = 2 # 定义网格的行数,表示有2行
columns = 2 # 定义网格的列数,表示会有2列
plt.figure(figsize=(12, 8), dpi=120) #创建一个新的图形,尺寸为12x8宽度为12,高度为8,分辨率为120 dpi。
grid = plt.GridSpec(rows, columns, wspace=.25, hspace=.25) # 创建一个网格布局,网格列和行之间的间距,这里设置为0.25,表示列和行之间各有25%的间距
for i in range(len(course_name)): #使用循环简化代码
    np.random.seed(100) #设置随机种子为100。这确保了每次运行代码时,随机数序列都是一样的
    course = np.random.randint(60, 100, N)# 使用random.randint函数生成N个随机整数,这些整数在60到99之间(包括60,但不包括100)
    plt.subplot(grid[i])
    plt.bar(name, course, alpha=.7)
    plt.ylabel(course_name[i] + '成绩')
    plt.ylim(60, 100) #y轴的最小值和最大值


plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号

#显示图表
plt.show()

4.2.4方法二显示图表

4.3水平多子图、按组上色

4.3.1代码

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
name = ['老大', '老二', '老三', '老四', '老五', '老六']# 创建一个包含六个类别的列表
course_name = ['数学', '物理', '生物', '化学'] #创建课程类别的列表
colors = ['#00429d', '#7f40a2', '#a653a1', '#c76a9f', '#e4849c', '#d0e848'] #每组的颜色

N = len(name)# 获取name列表的长度,即名字的数量
rows = 2 # 定义网格的行数,表示有2行
columns = 2 # 定义网格的列数,表示会有2列
plt.figure(figsize=(12, 8), dpi=120) #创建一个新的图形,尺寸为12x8宽度为12,高度为8,分辨率为120 dpi。
grid = plt.GridSpec(rows, columns, wspace=.25, hspace=.25) # 创建一个网格布局,网格列和行之间的间距,这里设置为0.25,表示列和行之间各有25%的间距

for i in range(len(course_name)): #使用循环简化代码
    np.random.seed(100) #设置随机种子为100。这确保了每次运行代码时,随机数序列都是一样的
    course = np.random.randint(60, 100, N)# 使用random.randint函数生成N个随机整数,这些整数在60到99之间(包括60,但不包括100)
    plt.subplot(grid[i])
    plt.barh(name, course, color=colors)  # 水平条形图,按组上色
    plt.xlabel(course_name[i] + '成绩')
    plt.xlim(60, 100) #y轴的最小值和最大值
    plt.gca().invert_yaxis()#获取当前的子图并反转其 y 轴。

plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号

#显示图表
plt.show()

4.3.2显示图表

4.4 水平多子图、添加误差棒

4.4.1代码

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
name = ['老大', '老二', '老三', '老四', '老五', '老六']# 创建一个包含六个类别的列表
course_name = ['数学', '物理', '生物', '化学'] #创建课程类别的列表

N = len(name)# 获取name列表的长度,即名字的数量
rows = 2 # 定义网格的行数,表示有2行
columns = 2 # 定义网格的列数,表示会有2列
colors = ['#00429d', '#7f40a2', '#a653a1', '#c76a9f', '#e4849c', '#d0e848'] #每组的颜色
plt.figure(figsize=(12, 8), dpi=120) #创建一个新的图形,尺寸为12x8宽度为12,高度为8,分辨率为120 dpi。
grid = plt.GridSpec(rows, columns, wspace=.25, hspace=.25) # 创建一个网格布局,网格列和行之间的间距,这里设置为0.25,表示列和行之间各有25%的间距
np.random.seed(100) #设置随机种子为100。这确保了每次运行代码时,随机数序列都是一样的

for i in range(len(course_name)): #使用循环简化代码
    course = np.random.randint(65, 95, N)# 使用random.randint函数生成N个随机整数,这些整数在60到99之间(包括60,但不包括100)
    noise = np.random.randint(1, 3, N) #误差在1-3之间
    plt.subplot(grid[i])
    plt.barh(name, course, color=colors,xerr=noise,ecolor='k')  # 水平条形图,按组上色
    plt.xlabel(course_name[i] + '成绩')
    plt.xlim(60, 100) #y轴的最小值和最大值
    plt.gca().invert_yaxis()#获取当前的子图并反转其 y 轴。

plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号

#显示图表
plt.show()

4.4.2显示图表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pythoner研习社

整理不易,感谢金主!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值