使用Python制作简单的图表并设置图表元素

news2024/12/28 22:44:43

案例01 在python中制作简单的图表

import matplotlib.pyplot as plt  #  导入matplotlib模块
x = [1, 2, 3, 4, 5, 6] # 给出x坐标的数据
y = [2, 4, 6, 8, 10, 12] # 给出y坐标的数据
plt.plot(x, y, color = 'red', linewidth = 3, linestyle = 'solid')  # 绘制折线图
plt.show() # 显示绘制的图表

运行结果:

 

知识延伸

1、plot()是Matplotlib模块的函数,用于绘制折线图。

语法格式:

plot(x,y,color,linewidth,linestyle)

参数说明
xx坐标的值
yy坐标的值
color

折线的颜色。Matplotlib模块支持多种格式定义的颜色,常用的有

  • 用颜色的单词或其简写定义的8种基础颜色
  • 用RGB值的浮点数元组定义的颜色,RGB值通常是用0~255的十进制整数表示的
  • 用RGB值的十六进制字符串定义的颜色,如‘#33FF00’,其与(51,255,0)是相同的RGB颜色,可以搜索“十六进制颜色码转换工具”来获取更多颜色
linewidth折线的粗细
linestyle折线的类型。用特定含义的字符串表示,如:实线用‘-’或‘solid’表示

 2、show()是Matplotlib模块的函数,用于显示绘制的图表。

在python中绘制柱形图

import matplotlib.pyplot as plt  
x = [1, 2, 3, 4, 5, 6]
y = [50, 60, 80, 78, 95, 70]
plt.bar(x, y, width = 0.8, align = 'center', color = 'blue')  # 绘制柱形图
plt.show()

运行结果:

 

bar()就是Matplotlib模块中用于制作柱形图的函数。

语法格式:

bar(x,height,width=0.8,bottom=None,align='center',color,edgecolor,linewidth)

参数说明
xx坐标的值
heighty坐标的值,也就是每根柱子的高度
width柱子的宽度,默认值为0.8
bottom每根柱子的底部的y坐标值
align柱子的位置与x坐标的关系。默认值为‘center’,表示柱子与x坐标居中对齐;如为‘edge’,表示柱子与x坐标左对齐
color柱子的填充颜色
edgecolor柱子的边框颜色
linewidth柱子的边框粗细

在python中绘制条形图

import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [60, 25, 78, 50]
plt.barh(x, y, align = 'center', color = 'blue')  # 绘制条形图
plt.show()

运行结果:

 

barh()就是Matplotlib模块中用于绘制条形图的函数。

语法格式:

barh(y,width,height=0.8,left=None,align='center',color,edgecolor,linewidth)

参数说明
yy坐标的值
widthx坐标的值,也就是每根条形的宽度
height条形的高度,默认值为0.8
left每根条形的左侧边缘的x坐标值
align

条形的位置与y坐标的关系。默认值为‘center’,表示条形与y坐标居中对齐;如为‘edge’,表示条形的底部与y坐标对齐

color条形的填充颜色
edgecolor条形的边框颜色
linewidth条形的边框粗细

在python中制作饼图

import matplotlib.pyplot as plt  
x = [25, 45, 69, 30, 80, 12]
plt.pie(x)  # 根据x坐标值绘制饼图
plt.show()

运行结果:

 

案例02 在python中导入Excel数据制作简单的图表——销售业绩表.xlsx

导入数据制作柱形图

import pandas as pd
import matplotlib.pyplot as plt
import xlwings as xw
df = pd.read_excel('销售业绩表.xlsx') # 从指定工作簿中读取数据
figure = plt.figure() # 创建一个绘图窗口
plt.rcParams['font.sans-serif'] = ['SimHei']  # 为图表中的中文文本设置默认字体,以避免中文显示乱码问题
plt.rcParams['axes.unicode_minus'] = False # 解决坐标值为负数时无法正常显示负号的问题
x = df['月份']  # 指定“月份”列为x坐标的值
y = df['销售额'] # 指定“销售额”列为y坐标的值
plt.bar(x, y, color = 'black') # 制作柱形图
app = xw.App(visible = False) # 启动Excel程序
workbook = app.books.open('销售业绩表.xlsx') # 打开要插入图表的工作簿
worksheet = workbook.sheets['销售业绩'] # 选中要插入图表的工作表
worksheet.pictures.add(figure, left = 500) # 在工作表中插入柱形图
workbook.save()
workbook.close()
app.quit()

运行结果:

知识延伸

SimHei是黑体的英文名称,如果想使用其他字体,可参考如下的常用字体名称中英文对照表

字体中文名称字体英文名称字体中文名称字体英文名称
黑体SimHei仿宋FangSong
微软雅黑Microsoft YaHei楷体KaiTi
宋体SimSun细明体MingLiU
新宋体NSimSun新细明体PMingLiU
 

导入数据制作散点图

import pandas as pd
import matplotlib.pyplot as plt
import xlwings as xw
df = pd.read_excel('销售业绩表.xlsx')
figure = plt.figure()
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = df['月份']
y = df['销售额']
plt.scatter(x, y, s = 500, color = 'red', marker = '*')  # 制作散点图
app = xw.App(visible = False)
workbook = app.books.open('销售业绩表.xlsx')
worksheet = workbook.sheets['销售业绩']
worksheet.pictures.add(figure, left = 500)
workbook.save()
workbook.close()
app.quit()

运行结果:

 

scatter()是Matplotlib模块中用于制作散点图的函数,参数marker用于设置散点图中每个点的形状。 

导入数据制作面积图

import pandas as pd
import matplotlib.pyplot as plt
import xlwings as xw
df = pd.read_excel('销售业绩表.xlsx')
figure = plt.figure()
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = df['月份']
y = df['销售额']
plt.stackplot(x, y, colors = 'red') # 制作面积图
app = xw.App(visible = False)
workbook = app.books.open('销售业绩表.xlsx')
worksheet = workbook.sheets['销售业绩']
worksheet.pictures.add(figure, left = 500)
workbook.save()
workbook.close()
app.quit()

运行结果:

 

stackplot()是Matplotlib模块中用于制作面积图的函数。

语法格式:

stackplot(x,y,labels,colors)

参数说明
xx坐标的值
yy坐标的值
labels图表的图例名
colors图表的颜色

案例03 在python中制作组合图表——销售业绩表1.xlsx

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('销售业绩表1.xlsx')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = df['月份']  # 指定数据中的“月份”列为x坐标的值
y1 = df['销售额']  # 指定数据中的“销售额”列为y坐标的第1组值
y2 = df['利润'] # 指定数据中的“利润”列为y坐标的第2组值
plt.plot(x, y1, color = 'black', linewidth = 4) # 用x坐标和第1组y坐标制作折线图
plt.bar(x, y2, color = 'blue') # 用x坐标和第2组y坐标制作柱形图
plt.show()

运行结果:

 

 知识延伸

组合图表的制作和单个图表的制作方法基本相同,区别在于单个图表中的x和y坐标的值都只有一组,而组合图表的x坐标的值可能会被两组y坐标的值共用,或者y坐标的值会被两组x坐标的值共用。在制作组合图表时,只需要为图表设置两组x坐标值或两组y坐标值,然后制作两个图表即可。

制作双折线图

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('销售业绩表1.xlsx')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x1 = df['月份']
y1 = df['销售额']
y2 = df['利润']
plt.plot(x1, y1, color = 'red', linewidth = 3, linestyle = 'solid')
plt.plot(x1, y2, color = 'black', linewidth = 3, linestyle = 'solid')
plt.show()

运行结果:

 

案例04 添加并设置图表标题和坐标轴标题——销售业绩表.xlsx

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('销售业绩表.xlsx')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = df['月份']  # 指定数据中的“月份”列为x坐标的值
y = df['销售额'] # 指定数据中的”销售额“列为y坐标的值
plt.bar(x, y, color = 'black')  # 制作柱形图
plt.title(label = '各月销售额对比图', fontdict = {'family' : 'KaiTi', 'color' : 'red', 'size' : 20}, loc = 'left') # 添加并设置图表标题
plt.xlabel('月份', fontdict = {'family' : 'SimSun', 'color' : 'black', 'size' : 15}, labelpad = 10) # 添加并设置x轴标题
plt.ylabel('销售额', fontdict = {'family' : 'SimSun', 'color' : 'black', 'size' : 15}, labelpad = 10) # 添加并设置y轴标题
plt.show()

运行结果:

 

知识延伸

1、title()是Matplotlib模块中的函数,用于给图表添加和设置标题。

语法格式:

title(label,fontdict=None,loc='center',pad=None)

参数说明
label图表标题的文本内容
fontdict图表标题的字体、字号和颜色等
loc图表标题的显示位置。默认值为‘center’,表示在图表上方居中显示。还可以设置为‘left’或‘right’,表示在图表上方靠左或靠右显示
pad图表标题到图表坐标系顶端的距离

 2、xlabel()和ylabel()是Matplotlib模块中的函数,分别用于添加和设置x、y轴的标题。

语法格式:

xlabel/ylabel(label,fontdict=None,labelpad=None)

参数说明
label坐标轴标题的文本内容
fontdict坐标轴标题的字体、字号和颜色等
labelpad坐标轴标题到坐标轴的距离

添加图例

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('销售业绩表.xlsx')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = df['月份']
y = df['销售额']
plt.bar(x, y, color = 'red', label = '销售额')  # 制作柱形图并设置图例名
plt.legend(loc = 'upper left', fontsize = 20) # 添加并设置图例
plt.show()

运行结果:

 legend()是Matplotlib模块中的函数,用于为图表添加并设置图例。

语法格式:

legend(loc,fontsize,facecolor,edgecolor,shadow=False)

参数说明
loc图例的显示位置。取值为特定的字符串,常用的有‘upper left’、‘upper right’、‘lower left’、‘lower right’,分别表示左上角、右上角、左下角、右下角
fontsize图例名的字号
facecolor图例框的背景颜色
edgecolor图例框的边框颜色
shadow是否给图例框添加阴影,默认值为False,表示不添加阴影

案例05 添加并设置数据标签——销售业绩表.xlsx

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('销售业绩表.xlsx')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = df['月份']
y = df['销售额']
plt.plot(x, y, color = 'red', linewidth = 3, linestyle = 'solid') # 制作折线图
for a,b in zip(x, y):
    plt.text(a, b, b, fontdict = {'family' : 'KaiTi', 'color' : 'red', 'size': 20}) # 添加并设置数据标签
plt.show()

运行结果:

知识延伸

1、zip()是python的内置函数,它以可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表。

语法格式:

zip([iterable,…])

iterable:指一个或多个可迭代的对象

2、text()是Matplotlib模块中的函数,用于为图标添加并设置数据标签。

语法格式:

text(x,y,s,fontdict=None)

参数说明
x数据标签的x坐标
y数据标签的y坐标
s数据标签的文本内容
fontdict可选参数,用于设置数据标签的字体、字号、颜色等
 

设置y轴的取值范围

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('销售业绩表.xlsx')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = df['月份']
y = df['销售额']
plt.plot(x, y, color = 'red', linewidth = 3, linestyle = 'solid')
plt.ylim(0, 1200000) # 设置y轴的取值范围
for a,b in zip(x, y):
    plt.text(a, b, b, fontdict = {'family' : 'KaiTi', 'color' : 'red', 'size': 20})
plt.show()

运行结果:

 ylim()是Matplotlib模块中用于为图表设置y轴取值范围的函数。

语法格式:

ylim(num1,num2)

参数:

num1:y轴的最小值

num2:y轴的最大值

案例06 为组合图表添加并设置次坐标——销售业绩表2.xlsx

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('销售业绩表2.xlsx')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = df['月份'] # 指定数据中的”月份“列为坐标的值
y1 = df['销售额'] # 指定数据中的”销售额“列为y坐标的第1组值
y2 = df['同比增长'] # 指定数据中的”同比增长“列为y坐标的第2组值
plt.bar(x, y1, color = 'grey', label = '销售额') # 制作柱形图
plt.legend(loc = 'upper left', fontsize = 20) # 为柱形图添加和设置图例
plt.twinx() # 为图表设置双坐标轴
plt.plot(x, y2, color = 'black', linewidth = 3, label = '同比增长') # 制作折线图
plt.legend(loc = 'upper right', fontsize = 20) # 为折线图添加和设置图例
plt.show()

运行结果:

twinx()是Matplotlib模块中的函数,用于为图表设置双坐标轴。该函数没有参数,可直接使用。 

添加并设置网格线——销售业绩表.xlsx

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('销售业绩表.xlsx')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = df['月份']
y = df['销售额']
plt.plot(x, y, color = 'black', linewidth = 3, linestyle = 'solid')
plt.grid(b = True, axis = 'y', color = 'red', linestyle = 'dashed', linewidth = 1) # 为y轴添加并设置网格线
plt.show()

运行结果:

 grid()是Matplotlib模块中的函数,用于为图表添加并设置网格线。

语法格式:

grid(b,which,axis,color,linestyle,linewidth)

参数说明
b如果为True,表示显示网格线;如果为False,表示不显示网格线
which要设置哪种类型的网格线。取值为‘major’、‘minor’、‘both’,分别表示只设置主要网格线、只设置次要网格线、两者都设置
axis要设置哪个轴的网格线。取值为‘x‘,’y‘,’both',分别表示只设置x轴的网格线、只设置y轴的网格线、两者都设置
color网格线的颜色
linestyle网格线的线型
linewidth网格线的粗细

使用Python制作简单的图表并设置图表元素,这些案例中使用到的数据文件请点击这里 【免费】使用Python制作简单的图表并设置图表元素所用到的数据.zip资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/675717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态库的入口——VCRT(DLL)和CRT(SO)

摘要:为了更加深入的理解动态库的加载初始化过程,本文根据VCRT和Linux-CRT的代码实现详细描述了windows和linux平台下对应动态库加载时会进行哪些工作。本文重点关注全局变量的初始化时机,以及是否有其他额外的操作。   关键字:…

被微服务循环依赖调用坑了 !

最近的迭代转测后,遇到了一个比较有意思的问题。系统在测试环境整体运行还算平稳,但是过一段时间之后,就开始有接口超时了,日志中出现非常多的 “java.net.SocketTimeoutException: Read timed out”。 试了几次重启大法&#xf…

用魔法打败魔法!用AI制作AI分割数据集!

本节内容我们使用SAM将边界框转换为分割数据集,这对于实例分割数据集的制作非常有用,下面我会一步步给出我的代码,希望对你有用。 有兴趣的朋友可以研究一下这本书,详细的介绍了数据集制作到分割的实际项目应用! 步骤 …

【 计算机组成原理 】期末重点

文章目录 前言第一章 【计算机系统概论】1.1 知识点1.1核心例题 第二章 【运算方法和运算器】2.1 知识点2.2 核心例题 第三章 【存储系统】3.1 知识点3.2 核心例题 第四章 【指令系统】4.1 知识点4.2 核心例题 第五章 【中央处理器】5.1 知识点5.2 核心例题 第六章6.1 知识点6.…

【MSP432电机驱动学习—上篇】TB6612带稳压电机驱动模块、MG310电机、霍尔编码器

所用控制板型号:MSP432P401r 今日终于得以继续我的电赛小车速通之路: 苏轼云 “ 素面常嫌粉涴 , 洗妆不褪朱红。 ” 这告诫我们不能只注重在表面粉饰虚伪的自己,要像梅花一样,不断磨砺自己的内在~ 后半句是 “…

JavaSE基础语法--类和对象

在Java中,一切皆为对象,类和对象是一个抽象的概念。我们可以从面向过程来过渡到面向对象。 那么什么是面向过程呢? 举一个简单的例子,现实生活中,你需要买一台手机的时候会经历如下步骤: 这里的每一步都可…

【python程序设计】——期末大作业

【python程序设计】——期末大作业😎 前言🙌一、所用技术:二、 系统设计三、 系统实现3.1 核心功能代码实现:3.2 演示结果展示 总结撒花💞 😎博客昵称:博客小梦 😊最喜欢的座右铭&am…

yaffs格式的根文件系统制作

linux内核启动后,它接下来要做的事就是启动应用程序,而应用程序在哪里呢,类比windows,启动时要读取c盘,所以linux的文件系统就类似于c盘,并且我们使用的ls、cp等一些类命令(本质是应用程序&…

JavaScript 手写代码 第二期

文章目录 1.为什么要手写代码?2. 手写代码2.1 手写实现判断类型函数2.1.1 前置知识2.1.1 手写实现 2.2 手写实现aplly,call,bind方法2.2.1 基本使用2.2.2 实现思路2.2.3 手写实现 1.为什么要手写代码? 我们在日常开发过程中,往往都是取出来直…

Linux(centos7)缺失.bashrc文件登录出现bash-4.2

一、问题描述 最近遇到几次登陆linux(centos7.5)系统后,虽然在/root用户下,但出现了如下界面: 二、解决思路 使用不同的linux发行版本,(比如:IP为*...90,以下简称90)会…

课程19:个人中心功能与提示优化

🚀前言 本文是《.Net Core从零学习搭建权限管理系统》教程专栏的课程(点击链接,跳转到专栏主页,欢迎订阅,持续更新…) 专栏介绍:以实战为线索,基于.Net 7 + REST + Vue、前后端分离,不依赖任何第三方框架,从零一步一步讲解权限管理系统搭建。 专栏适用于人群:We…

Android中加载一张大图,如何正常显示且不发生OOM ?

问题 在Android中,获取一个1000*20000(宽1000px,高20000px)的大图,如何正常加载显示且不发生OOM呢? 分析 Android系统会为应用分配一定大小的堆内存 而如果遇到高分辨率图片时,如果它的配置为ARGB(每个像素占4Byte) 那么它要消…

深度学习(23)——YOLO系列(2)

深度学习(23)——YOLO系列(2) 文章目录 深度学习(23)——YOLO系列(2)1. model2. dataset3. utils4. test/detect5. detect全过程 今天先写YOLO v3的代码,后面再出v5&…

【PCB专题】案例:PCB板厂说焊盘宽度太小容易沉金不良,但加宽又可能导致阻焊桥在阻焊为黑色油墨下无法做出?

此案例是最近在Layout一块PCB板卡,使用了一个以前我没有接触过的器件,此器件的封装是QFN128。 总的问题是:PCB板厂说如果按原稿制作的话,焊盘宽度太小沉金容易不良,但电话里和我说如果加宽又可能导致阻焊桥在黑色油墨情况下无法做出? 板厂给的EQ如下所示,表示TOP面设计…

【Unity之IMGUI】—编译模式下控件可视化及其封装

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

【从零开始开发一个线上网课系统-01】账号登录及退出登录功能开发

文章目录 1 视图层开发2 form表单验证3 配置urls.py4 模板层开发 实际上在系统开发的博客中应该先描述数据库设计,但由于设计的表比较多,其理解简单,但撰写和描述较为麻烦,所以我以可视化方式来呈现这些数据表以及其中的关系&…

RISCV Reader笔记_1 RISCV的意义

RISCV Reader RISCV的诞生 出众之处 RISCV架构被设计的目的就是成为一个通用的指令集架构 ISA。不仅支持从微控制器到高性能计算机的各种处理器,兼容各种编程语言,还适应FPGA ASIC等所有实现技术,稳定…… 计算机体系结构为了在指令集更新…

Iceberg从入门到精通系列之一:Iceberg核心概念理解

Iceberg从入门到精通系列之一:Iceberg核心概念理解 一、Iceberg核心概念二、Iceberg表结构三、数据文件四、表快照Snapshot五、清单列表Manifest list六、表快照、数据文件和清单列表之间的关系七、Catalog八、Hive Catalog九、Hadoop Catalog十、Hive Catalog和Had…

Alamouti,MRC以及beam三种方式的误码率对比MATLAB仿真程序

Alamouti,MRC以及beam三种方式的误码率对比MATLAB仿真程序 完整程序: clc; clear; close all; warning off; addpath(genpath(pwd)); %%%%%%%%%%%%%%%%%%%%%%%%% Initialization %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N = 10^6; r_n = rand(1,N)>0.5; BPSK = 2*r_n-1; E_n_d…

chatgpt赋能python:Python生成GUI的步骤和工具

Python生成GUI的步骤和工具 Python是一种广泛使用的编程语言,其语法简洁、易学、可读性强等特点深受程序员喜爱。 Python的GUI编程让我们可以为用户提供友好的界面,帮助用户更好地理解和使用程序。Python生成GUI的过程并不复杂,本文将为您介…