第五章. 可视化数据分析分析图表—常用图表的绘制1—折线图,柱形图
创始人
2024-03-09 00:36:51
0

第五章. 可视化数据分析分析图

5.3 常用图表的绘制1—折线图,柱形图

本节主要介绍常用图表的绘制,主要包括折线图,柱形图。

1.折线图(matplotlib.pyplot.plot)

折线图可以显示随时间而变化的连续数据,适用于显示在相同时间间隔下数据的趋势

1).语法:

matplotlib.pyplot.plot(x,y,format_string,**kwargs)

参数说明:
x:x轴数据
y:y轴数据
format_string:控制曲线格式的字符串,包括颜色,线条样式,标记样式等
**kwargs:键值参数,相当于一个字典,比如,输入参数为:(1,2,3,4,k,a=1,b=2,c=3),*args=(1,2,3,4,k),**kwargs={‘a’:1,‘b’:2,‘c’:3}

2).示例:

  • 示例1:基本折线图
import pandas as pd
import matplotlib.pyplot as pltpd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet2')
print(df)# 设置画布
fig = plt.figure(figsize=(6, 4), facecolor='y')plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题# X,Y轴刻度线的显示方向
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'# 设置线
plt.plot(df['姓名'], df['生物'], color='c', linestyle='-', marker='o', mfc='w')# 设置网格线
plt.grid(color='0.5', linestyle='--', linewidth=1)# 设置x,y轴坐标
plt.xlabel('姓名')
plt.ylabel('分数')# 设置坐标轴刻度
plt.xticks(df['姓名'])
plt.yticks(range(0, 160, 10))# 设置文本标签
for x, y in zip(df['姓名'], df['生物']):plt.text(x, y + 5, '%.2f' % y, ha='center', va='center', fontsize=8, color='darkorange')# 设置标题和图例
plt.title('成绩统计表')# 设置图标图例
plt.legend(['生物'],loc='upper right')  # 手动添加图例时,有时文本会显示不全,在文本后面加一个逗号(,)可解决,例如('图书采购价目',)# 调整图表与画布边缘间距
plt.subplots_adjust(left=0.15, bottom=0.15, right=0.9, top=0.9)# 坐标轴的刻度线向内显示还是向外显示
plt.tick_params(left=True, bottom=True, right=False, top=False)# 显示图像
plt.show()

结果展示:
在这里插入图片描述

  • 示例2:多折线图
import pandas as pd
import matplotlib.pyplot as pltpd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet2')
print(df)# 设置画布
fig = plt.figure(figsize=(6, 4), facecolor='y')plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题# X,Y轴刻度线的显示方向
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'# 设置线
plt.plot(df['姓名'], df['生物'], color='m', linestyle=':', marker='o', mfc='w')
plt.plot(df['姓名'], df['化学'], color='y', linestyle='--', marker='D', mfc='w')
plt.plot(df['姓名'], df['物理'], color='0.5', linestyle='-', marker='d', mfc='w')# 设置网格线
plt.grid(color='0.5', linestyle='--', linewidth=1)# 设置x,y轴坐标
plt.xlabel('姓名')
plt.ylabel('分数')# 设置坐标轴刻度
plt.xticks(df['姓名'])
plt.yticks(range(0, 160, 10))# 设置文本标签
# str_name = {'生物', '化学', '物理'}
# for i in str_name:
#     for x, y in zip(df['姓名'], df[i]):
#         plt.text(x, y, '%.2f' % y, ha='center', va='bottom', fontsize=7)# 设置标题和图例
plt.title('成绩统计表')# 设置图标图例
plt.legend(['生物', '化学', '物理'],loc='upper right')  # 手动添加图例时,有时文本会显示不全,在文本后面加一个逗号(,)可解决,例如('图书采购价目',)# 调整图表与画布边缘间距
plt.subplots_adjust(left=0.15, bottom=0.15, right=0.9, top=0.9)# 坐标轴的刻度线向内显示还是向外显示
plt.tick_params(left=True, bottom=True, right=False, top=False)# 显示图像
plt.show()

结果展示:
在这里插入图片描述

2.柱形图(matplotlib.pyplot.bar)

柱形图用来比较两个或以上的数据(不同时间或者不同条件),只有一个变量,通常用于较少数据集分析

1).语法:

matplotlib.pyplot.bar(x,height,width,bottom=None,*,align='center',data=None,**kwargs)

参数说明:
x:x轴数据
height:y轴数据
width:柱子的宽度,默认值0.8
bottom:标量或者数组,可选参数,柱形图的y坐标,默认值None
*:星号本身不是参数,星号表示其后面的参数为命名关键字参数,命名关键字参数必须传入参数名,否则程序会出现错误
align:对其方式:可选参数:center和edge,默认值center
data:关键字参数,若给定一个数据参数,所有位置和关键字参数将会被替换
**kwargs:关键字参数:其他可选参数,如color(颜色),alphs(透明度),label(每个柱子显示的标签)

2).示例:

  • 示例1:基本柱形图
import pandas as pd
import numpy as np
import matplotlib.pyplot as pltpd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet2')
print(df)# 设置画布
fig = plt.figure(figsize=(6, 4), facecolor='y')plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题# X,Y轴刻度线的显示方向
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'x_label = df['姓名']# 柱形图
x_label = np.arange(len(x_label))  # x轴刻度标签位置
width = 0.25  # 柱子的宽度plt.bar(x_label, df['生物'], width=width, color='orange')# 设置网格线
plt.grid(axis='y', color='0.5', linestyle='--', linewidth=1)# 设置x,y轴坐标
plt.xlabel('姓名')
plt.ylabel('分数')# # 设置坐标轴刻度
plt.xticks(x_label, df['姓名'])
plt.yticks(range(0, 160, 10))# 设置文本标签for x, y in zip(x_label, df['生物']):plt.text(x, y, '%.1f' % y, ha='center', va='baseline', fontsize=7.5)# 设置标题和图例
plt.title('成绩统计表')# 设置图标图例
plt.legend(['生物'],loc='upper right')  # 手动添加图例时,有时文本会显示不全,在文本后面加一个逗号(,)可解决,例如('图书采购价目',)# 调整图表与画布边缘间距
plt.subplots_adjust(left=0.15, bottom=0.15, right=0.9, top=0.9)# 坐标轴的刻度线向内显示还是向外显示
plt.tick_params(left=True, bottom=True, right=False, top=False)# 显示图像
plt.show()

结果展示:
在这里插入图片描述

  • 示例2:多柱形图
import pandas as pd
import numpy as np
import matplotlib.pyplot as pltpd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet2')
print(df)# 设置画布
fig = plt.figure(figsize=(6, 4), facecolor='y')plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题# X,Y轴刻度线的显示方向
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'x_label = df['姓名']# 柱形图
x_label = np.arange(len(x_label))  # x轴刻度标签位置
width = 0.25  # 柱子的宽度plt.bar(x_label - width, df['生物'], width=width, color='orange')
plt.bar(x_label, df['化学'], width=width, color='skyblue')
plt.bar(x_label + width, df['物理'], width=width, color='c')# 设置网格线
plt.grid(axis='y', color='0.5', linestyle='--', linewidth=1)# 设置x,y轴坐标
plt.xlabel('姓名')
plt.ylabel('分数')# # 设置坐标轴刻度
plt.xticks(x_label, df['姓名'])
plt.yticks(range(0, 160, 10))# 设置文本标签
str_name = ['生物', '化学', '物理']
dis1 = x_label - width
dis2 = x_label
dis3 = x_label + widthdis = [dis1, dis2, dis3]index = 0
for i in str_name:for x, y in zip(x_label, df[i]):plt.text((dis[index][x]), y, '%.1f' % y, ha='center', va='baseline', fontsize=7.5)index = index + 1# 设置标题和图例
plt.title('成绩统计表')# 设置图标图例
plt.legend(['生物', '化学', '物理'],loc='upper right')  # 手动添加图例时,有时文本会显示不全,在文本后面加一个逗号(,)可解决,例如('图书采购价目',)# 调整图表与画布边缘间距
plt.subplots_adjust(left=0.15, bottom=0.15, right=0.9, top=0.9)# 坐标轴的刻度线向内显示还是向外显示
plt.tick_params(left=True, bottom=True, right=False, top=False)# 显示图像
plt.show()

结果展示:
在这里插入图片描述

  • 示例3:堆叠柱形图
import pandas as pd
import matplotlib.pyplot as pltpd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet2')
print(df)# 设置画布
fig = plt.figure(figsize=(6, 4), facecolor='y')plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题# X,Y轴刻度线的显示方向
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'x_label = df['姓名']# # 柱形图
# x_label = np.arange(len(x_label))  # x轴刻度标签位置
width = 0.35  # 柱子的宽度plt.bar(x_label, df['生物'], width=width, color='orange')
plt.bar(x_label, df['化学'], width=width, color='skyblue',bottom=df['生物'])# 设置网格线
plt.grid(axis='y', color='0.5', linestyle='--', linewidth=1)# 设置x,y轴坐标
plt.xlabel('姓名')
plt.ylabel('分数')# # 设置坐标轴刻度
plt.xticks(x_label, df['姓名'])
plt.yticks(range(0, 201, 10))# 设置文本标签
for x, y in zip(x_label, df['生物'] + df['化学']):plt.text(x, y, '%.1f' % y, ha='center', va='baseline', fontsize=8, color='g')# 设置标题和图例
plt.title('成绩统计表')# 设置图标图例
plt.legend(['生物', '化学'],loc='upper right')  # 手动添加图例时,有时文本会显示不全,在文本后面加一个逗号(,)可解决,例如('图书采购价目',)# 调整图表与画布边缘间距
plt.subplots_adjust(left=0.15, bottom=0.15, right=0.9, top=0.9)# 坐标轴的刻度线向内显示还是向外显示
plt.tick_params(left=True, bottom=True, right=False, top=False)# 显示图像
plt.show()

结果展示:
请添加图片描述

注意:代码中所涉及到的函数和参数,在图表的常用设置1 和 图表的常用设置2 有所介绍

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...