Python数据可视化之matplotlib.pyplot绘图的基本参数详解
作者:小白微 发布时间:2022-06-10 12:19:48
1.matplotlib简介
matplotlib 库是 Python 中绘制二维和三维图表的数据可视化工具
特点:
使用简单绘图语句实现复杂绘图效果
以交互式操作实现渐趋精细的图形效果
使用嵌入式 LaTex 输出具有印刷级别的图表、科学表达式和符号文本
对图表的组成元素实现精细化控制
三种绘图接口
pyplot:面向当前图
axes:面向对象
Pylab:沿用 matlab 风格
本篇文章使用plot绘图(展示变量的趋势变化 )展示绘图的基本参数,使用numpy库获得绘图数据(随机),最后出来的图形并非经过仔细思考,一切以展示图形参数为主!!!
使用的库:
import matplotlib.pyplot as plt
import numpy as np
2.图形组成元素的函数用法
plot():展示变量的趋势变化
使用方法:plt.plot(x, y, c,ls, lw, label, alpha, **kwargs)
x,y:x,y 轴上的数值
c:设置颜色
ls:折线图的线条风格
lw:折线图的线条宽度
label:标记图形内容的标签文本
alpha:透明度
**kwargs:指定使用的是 line2D 属性
2.1. figure():背景颜色
使 用 方 法 :figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=Figure, clear=False, **kwargs)
num :
如果此参数没有提供,则一个新的 figure 对象将被创建,同时增加 figure 的计数数值,此数值被保存在 figure 对象的一个数字属性当中。如果有此参数,且存在对应 id 的 figure 对象,则激活对于 id 的 figure 对象。如果对应 id 的 figur 对象不存在,则创建它并返回它。如果 num 的值是字符串,则将窗口标题设置为此字符串
figsize:以英寸为单位的宽高,缺省值为 rc figure.figsize (1 英寸等于 2.54 厘米)
dpi:图形分辨率,缺省值为 rc figure.dpi
facecolor:背景色
plt.figure(figsize=(10, 10))
x = np.linspace(0.05, 10, 1000) # 在0.05到10的区间中,等差选取1000个,端点不属于
y = np.sin(x)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot(x, y,
color='red',
ls='-',
label='sinx')
plt.show()
2.2 xlim()和 ylim():设置 x,y 轴的数值显示范围
使用方法:plt.xlim(xmin,xmax)
xmin:x 轴上的最小值
xmax:x 轴上的最大值
2.3 xlabel()和 ylabel():设置 x,y 轴的标签文本
使用方法:plt.xlabel(fontsize, verticalalignment, horizontalalignment, rotation, bbox)
fontsize:数字或者(small,large,medium)
verticalalignment:距离坐标轴的位置(top,bottom,center,baseline)
hoizontalalignment:位置(center,right,left)
ratation:位置(vertical,horizontal,vertical)
bbox:添加边框
2.4 grid():绘制刻度线的网格线
使用方法:plt.grid(linestyle, color)
2.5 axhline():绘制平行于 x 轴额度水平参考线
使用方法:plt.axhline(y, c, ls, lw, label)
y:水平参考线的出发点
plt.figure(figsize=(10, 10))
x = np.linspace(0.05, 10, 1000) # 在0.05到10的区间中,等差选取1000个,端点不属于
y = np.sin(x)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot(x, y,
color='red',
ls='-',
label='sinx')
plt.xlim(1, 10)
plt.ylim(-1, 1)
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.grid(ls=':',
color='blue') # 设置网格,颜色为蓝色
plt.axhline(0.5, color='green', lw=2, label="分割线") # 绘制平行于x轴的水平参考线,绿色,名称
plt.show()
(上图中绿色的线即为axjline()添加的参考线)
2.6 axvspan():绘制垂直于 x 轴的参考区域
使用方法:plt.axvspan( xmin, xmax ,facecolor, alpha)
xmin:参考区域的起始位置
xmax:参考区域的终止位置
facecolor:参考区域的填充颜色
alpha:参考区域填充颜色的透明度,[0~1]
注:其使用方法也可以用在 axhspan()上
在上一段代码添加
plt.axvspan(xmin=2,
xmax=5,
facecolor='r',
alpha=0.2) # 绘制垂直于x轴的参考区域
即得到(注意:此段是区域)
2.7 xticks(),yticks()
获取或设置当前 x 轴或 y 轴刻度位置和标签(即设置 x 或 y 轴的标 签)
可以理解为设置xilim和ylim一样的效果,但可以指定范围和距离
plt.xticks(list(range(0, 12, 1))) # 调整刻度范围和刻度标签
注意看x轴,从原来的0~10到现在的0~11,可以通过设置第三个参数设置步长,这里设置为1
2.8 annotate():添加图形内容细节的指向型注释文本
函数方法:plt.annotate()
s:注释文本内容
xy:被注释的坐标点
xytext:注释文字的坐标位置
weight:设置字体线形(Ultralight,light,normal,regular,book,medium,roman,semibold,demibold,demi,bold,heavy,extrabold,black)
color:设置字体颜色;也可以设置 RGB 或 RGBA 类型的颜色;但必须为[0,1]之间的浮点 数
xycoords= 参数如下
figure points:图左下角的点
figure pixels:图左下角的像素
figure fraction:图的左下部分
axes points:坐标轴左下的点
axes pixels:坐标轴左下的像素
data:使用被注释对象的坐标系统
arrowprops:箭头参数,参数类型为字典 dict
width:箭头的宽度
headwidth:箭头底部以点为单位的宽度
headlength:箭头的长度
shrink:总长度的一部分,从两端“收缩”
facecolor:箭头颜色(如果设置了 arrowstyle 关键字,上面的参数都不可以用,可
以用这些:
-
->
-[
|-|
-|>
<->
<|-
<|-|>
fancy
simple
wedge)
plt.annotate('local',
xy=(2, 1),
xytext=(0.5, 0.5),
weight='bold',
color='red',
xycoords="data",
arrowprops=
dict(arrowstyle="->", connectionstyle='arc3', color='b'),
bbox=
dict(boxstyle="rarrow",
pad=0.6,
fc="yellow",
ec='k',
lw=1,
alpha=0.5)
)
这里的黄色箭头和蓝色细长线即为参数方法添加的参数,实际使用过程中根据自己的实际所需使用,可以认为添加对图像的一些解释
2.9 bbox:给标题增加外框
(boxstyle:方框外形;circle:椭圆;darrow:双向箭头;larrow:箭头向左;rarrow:箭
头向右;round:圆角矩形;round4:椭长方形;roundtooth:波浪形边框 1;sawtooth:
波浪形边框 2;square:长方形)
2.10 . text():添加图形内容细节的无指向型注释文本(水印)
函数方法:plt.text()
x,y:表示坐标轴上的值
weight:
ultralightlight
normal
regular
book
medium
roman
semibold
demibold
demi
bold
heavy
extrabold
black
xycoodrds:
figure points:图左下角的点
figure pixels:图左下角的像素
figure fraction:图的左下部分
axes points:坐标轴左下的点
axes pixels:坐标轴左下的像素
data:使用被注释对象的坐标系统
arrowprops:箭头参数,参数类型为字典 dict
width:箭头的宽度
headwidth:箭头底部以点为单位的宽度
headlength:箭头的长度
shrink:总长度的一部分,从两端“收缩”
facecolor:箭头颜色
bbox:给标题增加外框
boxstyle:方框外形
circle:椭圆
darrow:双向箭头
larrow:箭头向左
rarrow:箭头向右
round:圆角矩形
round4:椭长方形
roundtooth:波浪形边框 1
sawtooth:波浪形边框 2
square:长方形
plt.text(1, 1,
"y=sinx",
weight='bold',
color ='b')
这里设置在坐标(1,1)上,即文字下面y=sinx的蓝色字段
2.11. title():添加图形内容的标题
plt.title("正弦函数")
2.12. legend():标示不同图形的文本标签图例
使用方法:plt.legeng()
图例在图中的地理位置:
best
upper right
upper left
lower left
lower right
right
center left
center right
lower center
upper center
center
plt.legend(loc="lower left") # 设置图例位置
2.13 table():向子图中添加表格
plt.table(cellText=None, cellColours=None, cellloc='right' ,colWidths=None,
rowLabels=None, rowColours=None, collLabels=None, colColours=None,
collloc='center', loc='bpttpm', bbox=None, edges='closed', **kwargs)
cellText:表格单元格文本。类型为二维字符串列表
cellColours:表格单元格背景色。类型为二位颜色值列表
cellloc:表格单元格文本的对齐方式。默认值为right
left
right
center
colWidths:表格单元格宽度。类型为浮点数列表
rowLabels:表格行表头文本。类型为字符串列表
rowColours:表格行表头背景色。类型为颜色列表
colLabels:表格列表头文本。类型为字符串列表
colLoc:表格行表头文本对齐方式。默认 right
left
right
center
colColours:表格列表头背景色。类型为颜色列表
loc:单元格相对于子图的位置
bbox:绘制表格的边界框,如果此参数不为 None,将会覆盖 loc 参数
edges:单元格边线,该属性会影响各类单元格背景色
BRTL
open
closed
horizontal
vertical
3. 完整代码显示
import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(10, 10))
x = np.linspace(0.05, 10, 1000) # 在0.05到10的区间中,等差选取1000个,端点不属于
y = np.sin(x)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot(x, y,
color='red',
ls='-',
label='sinx')
plt.xlim(1, 10)
plt.ylim(-1, 1)
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.grid(ls=':',
color='blue') # 设置网格,颜色为蓝色
plt.axhline(0.5, color='green', lw=2, label="分割线") # 绘制平行于x轴的水平参考线,绿色,名称
plt.axvspan(xmin=2,
xmax=5,
facecolor='r',
alpha=0.2) # 绘制垂直于x轴的参考区域
plt.axhspan(ymin=(-3**0.5)/2,
ymax=(3**0.5)/2,
facecolor='w',
alpha=0.2)
plt.legend(loc="lower left") # 设置图例位置
plt.annotate('local',
xy=(2, 1),
xytext=(0.5, 0.5),
weight='bold',
color='red',
xycoords="data",
arrowprops=
dict(arrowstyle="->", connectionstyle='arc3', color='b'),
bbox=
dict(boxstyle="rarrow",
pad=0.6,
fc="yellow",
ec='k',
lw=1,
alpha=0.5)
)
plt.xticks(list(range(0, 12, 1))) # 调整刻度范围和刻度标签
plt.text(1, 1,
"y=sinx",
weight='bold',
color ='b')
plt.title("正弦函数")
plt.show()
这串代码用于显示中文字符
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
无论画什么图,最后都得使用plt.show()用于展示图片,否则输出为空
4.折线图的线条风格
-:实线样式
--:短横线样式
-.:点划线样式
::虚线样式
.:点标记
O:圆标记
V:倒三角标记
^:正三角标记
<:左三角标记
>:右三角表示
1:下箭头标记13
2:上箭头标记
3:左箭头标记
4:右箭头标记
S:正方形标记
p:五边形标记
*:星形标记
H:六边形标记
+:加号标记
X:x 标记
D:菱形标记
|:竖直线标记
_:水平线标记
5. 常用颜色缩写
b 蓝色
g 绿色
r 红色
c 青色
m 品红色·
y 黄色
k 黑色
w 白色
6.总结
很多参数有时候用不上,但要知道有,存在即合理,不同参数的作用功能不同,不要任何图都加太多参数,一般有图例、标题,xy轴的范围即可。
无论使用哪个,建议先试试,实践是检验真理的唯一标准!!!
来源:https://blog.csdn.net/qq_60471758/article/details/122752184
猜你喜欢
- 引言昨天把系分的项目又加了一点逻辑判断,比如已经下单的菜品不能减少,不能重复下单,应该先下单再支付等…弄完购物车的逻辑之后,发现一直没有管备
- yum or rpm?yum安装方式很方便,但是下载mysql的时候从官网下载,速度较慢。rpm安装方式可以从国内镜像下载mysql的rpm
- PHP 跳转,即重定向浏览器到指定的 URL,是一个很常见的功能。这种功能也有一些细节性的要求,比如等待多少秒以后跳转,用不用JavaScr
- 把dataframe转换为list输入多维dataframe: df = pd.DataFrame({'a':[1,3,5,
- 目录什么是 JSON在哪里使用JSON基本的 JSON 语法如何在 Python 中处理 JSON 数据包含 JSON 模块使用 json.
- 一,进程的理论基础一个应用程序,归根结底是一堆代码,是静态的,而进程才是执行中的程序,在一个程序运行的时候会有多个进程并发执行。进程和线程的
- 实现效果图如下:当我点击 + 按钮时,会添加一行输入框组;当点击 - 按钮时,会删除这一行输入框组html代码如下:<div clas
- 前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控
- 本文实例为大家分享了python实现ftp文件传输的具体代码,供大家参考,具体内容如下主要步骤可以分为以下几步:1.读取文件名2.检测文件是
- 本文探讨了提高MySQL数据库性能的思路,并从8个方面给出了具体的解决方法。1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取,
- 一、实现创建文件夹和日志#!/usr/bin/env python# -*- coding:utf-8 -*-# Author: nulig
- 最近看到很多关于MySql相关的语法,小白也想学习一些MySQL的存储过程的写法,因此就想安装MySQL,过程中遇到过一些问题,这里记录下来
- 目录背景实现工具打包调用总结众所周知,Golang 适合写 CLI 工具,但你可能还不知道 Golang 还可以打包配置文件。背景最近在写一
- 本文实例讲述了JS实现利用两个队列表示一个栈的方法。分享给大家供大家参考,具体如下:先看原理图:理清楚思路,再动笔写:<!DOCTYP
- 背景最近做项目开发出现一个需求,就是前端会发来用户对某一项内容的报错,报错信息中包含出错内容的id,为了方便管理,需要实现点击这个id直接转
- 发现一个很简单的配置方法,一直想写的没写上,今天抽空就把它给补充完整好了。本文的配置方法Windows,Mac和Linux系统均适合。一.安
- 导读你真的知道CHAR和VARCHAR类型在存储和读取时的区别吗?还是先抛几条结论吧:1、存储的时候,CHAR总是会补足空格后再存储,不管用
- 一. 分析需求1. 需求说明在项目开发过程中,我们有时会频繁的更新代码, 流程大概为:(1) 本地git push提交代码至git托管平台(
- 一、常见模型分类1.1、循环服务器模型循环接收客户端请求,处理请求。同一时刻只能处理一个请求,处理完毕后再处理下一个。优点:实现简单,占用资
- 如何用SA-FileUp上传多个文件?表单处理: <%@&nbs