首页 >> 大全

matplotlib可视化:基础绘图函数使用【函数功能+案例代码】

2023-10-17 大全 32 作者:考证青年

系列文章目录

可视化:基础绘图函数使用【函数功能+案例代码】

可视化:基础图像绘制

可视化:局部放大折线图+阴影区间绘制【原理+代码】

文章目录 2.3 绘制子图 2.4 网格设置grid()2.5 坐标轴设置 2.6 字体设置问题2.7 文本和箭头设置

前言

由于毕设写论文需要绘图,记录一下学习笔记。

一、简介

首先附上官网链接:官网链接

下载:

pip install matplotlib

由三个层次结构组成:脚本层、美工层和后端层。

二、基础函数用法 2.1 图形对象

通过plt.创建一个画布对象;函数的参数值如下:

参数说明

指定画布的大小,(宽度,高度),单位为英寸。

dpi

指定绘图对象的分辨率,即每英寸多少个像素,默认值为80。

背景颜色。

边框颜色。

是否显示边框。

示例如下:

import matplotlib.pyplot as plt
import numpy as np
import math#数据
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
#创建一个画布对象fig
fig=plt.figure(figsize=(10,10),dpi=100,facecolor='#B6D6F0',edgecolor='black',frameon=True)
"""
# figsize	指定画布的大小,(宽度,高度),单位为英寸。
# dpi	指定绘图对象的分辨率,即每英寸多少个像素,默认值为80。
# facecolor	背景颜色。
# edgecolor	边框颜色。
# frameon	是否显示边框。
"""
#绘制坐标轴的范围
#add_axes() 的参数值是一个序列,序列中的 4 个数字分别对应图形的左侧,底部,宽度,和高度,且每个数字必须介于 0 到 1 之间。
ax=fig.add_axes([0.3,0.3,0.5,0.5])
#设置x轴,y轴标签
ax.set_xlabel("angle")
ax.set_ylabel("sin(x)")
#设置图像标题
ax.set_title("y=sin(x)")
#绘制图像
ax.plot(x,y)
#展示图象
plt.show()

2.2 axes类使用

定义了 axes 类,该类的对象被称为 axes 对象。它指定了一个有数值范围限制的绘图区域。在一个给定的中可以包含多个 axes 对象,但是同一个 axes 对象只能在一个画布中使用。

2.2.1 创建axes对象

ax=fig.add_axes([0.1,0.1,0.8,0.8])

将画布的宽、高作为 1 个单位。比如,[ 0.1, 0.1, 0.8, 0.8],它代表着从画布 10% 的位置开始绘制, 宽高是画布的 80%。

2.2.2 axes.()绘制图例

axes的方法可以绘制图例,方法如下:

ax.legend(labels, loc)

其中, 是一个字符串序列,用来指定标签的名称;loc 是指定图例位置的参数,其参数值可以用字符串或整数来表示,可选位置参数如下:

位置字符串表示整数数字表示

自适应

best

右上方

upper right

左上方

upper left

左下

lower left

右下

lower right

右侧

right

居中靠左

left

居中靠右

right

底部居中

lower

上部居中

函数可视化软件_excel函数编程可视化_

upper

中部

10

举例:

ax.legend(labels = ('tv', 'Smartphone'), loc = 'lower right')

同时可以修改图例的大小:

ax.legend(prop = {'size':6})

还可以自定义图例的位置:(0,0)表示的是图的左下角,坐标的数值表示的是比例。

plt.legend(bbox_to_anchor=(0.3,0.5))

图例的样式也可以调整,默认的图例样式是竖排的。比如我们有两个图例,那么我们设置下面这个为2,就是默认并排展示,而不是并列展示

legend(ncol=2)

2.2.3 axes.plot()绘制图像

plot函数的可选参数主要用于设置线条类型,颜色,标记。

颜色标识颜色类型标记符号标记描述线型线型描述

‘b’

蓝色

‘.’

点标记

‘-’

实线

‘g’

绿色

‘o’

圆圈标记

‘–’

虚线

‘r’

红色

‘x’

'X’标记

‘-.’

点划线

‘c’

青色

‘H’

六角标记

‘:’

虚线

‘m’

品红色

‘s’

正方形标记

‘H’

六角标记

‘y’

黄色

‘+’

加号标记

‘k’

黑色

‘D’

钻石标记

‘w’

白色

对于axes类的方法使用,示例代码如下:

import matplotlib.pyplot as plt#创建画布
fig=plt.figure(dpi=100)
#创建axes
ax=fig.add_axes([0.1,0.1,0.8,0.8])
#绘图
ax.plot([1,2,3,4],[1,3,6,9],'ro-')
ax.plot([1,2,3,4],[2,5,8,12],'bH-.')
#设置图例
ax.legend(labels=('twitter','weibo'), loc='best')
#设置坐标轴
ax.set_xlabel("time")
ax.set_ylabel("visit")
#设置图像标题
ax.set_title("compare")
#展示图片
plt.show()

同时参数可以设置线型,可以设置线宽。

_函数可视化软件_excel函数编程可视化

在一个画布里面可以拥有多个ax对象,示例代码如下:

    fig=plt.figure(dpi=100)ax1,ax2=fig.add_axes([0.1,0.1,0.8,0.8]),fig.add_axes([0.58,0.15,0.26,0.26])#绘制第一个图像ax1.plot([1,2,3,4],[3,5,7,10],'bD-')ax1.plot([1,2,3,4],[2,6,8,14],'r+:')ax1.set_xlabel("time")ax1.set_ylabel("count")ax1.set_title("graph-one")ax1.legend(labels=['line1','line2'],loc='best')#绘制第二个图象ax2.plot([1,2,3,4],[3,5,7,10],'rD-')ax2.plot([1,2,3,4],[2,6,8,14],'b+:')ax2.set_xlabel("time")ax2.set_ylabel("count")ax2.set_title("graph-two")ax2.legend(labels=['line1','line2'],loc='best')plt.show()

2.3 绘制子图 2.3.1 ()函数

() 既创建了一个包含子图区域的画布,又创建了一个 图形对象:

fig , ax = plt.subplots(nrows, ncols)

nrows 与 ncols 表示两个整数参数,它们指定子图所占的行数、列数。返回值是一个元组,包括一个图形对象和所有的 axes 对象。其中 axes 对象的数量等于 nrows * ncols,且每个 axes 对象均可通过索引值访问(从1开始)。

示例:

import matplotlib.pyplot as plt
import numpy as np
import math#创建画布和多个子图axes
fig,ax=plt.subplots(2,2)
fig.figsize=(8,6)
#x轴数据
x=np.arange(1,10,1)
#对多个子图进行绘制
ax[0][0].plot(x,np.sin(x))
ax[0][0].set_title("y=sin(x)")ax[0][1].plot(x,np.cos(x))
ax[0][1].set_title("y=cos(x)")ax[1][0].plot(x,np.log(x))
ax[1][0].set_title("y=log(x)")ax[1][1].plot(x,np.exp(x))
ax[1][1].set_title("y=exp(x)")
#展示图像
plt.show()

2.3.2 ()函数

() 函数以非等分的形式对画布进行切分,并按照绘图区域的大小来展示最终绘图结果。

plt.subplot2grid(shape, location, rowspan, colspan)

参数含义如下:

import matplotlib.pyplot as plt
import numpy as npa1 = plt.subplot2grid((3,3),(0,0),colspan=3)
a2 = plt.subplot2grid((3,3),(1,0), rowspan = 2)
a3 = plt.subplot2grid((3,3),(1,1),rowspan = 2, colspan = 2)x = np.arange(1,10)
a2.plot(x, x*x)
a2.set_title('square')
a1.plot(x, np.exp(x))
a1.set_title('exp')
a3.plot(x, np.log(x))
a3.set_title('log')
plt.tight_layout()
plt.show()

2.4 网格设置grid()

grid() 方法可以开启或者关闭画布中的网格(即是否显示网格)以及网格的主/次刻度;设置网格的颜色、线型以及线宽等属性。

grid(color='b', ls = '-.', lw = 0.25)

示例代码如下:

import matplotlib.pyplot as plt
import numpy as np
#数据源
x = np.arange(1,11)
#创建画布和子图
fig,ax=plt.subplots(1,3,figsize=(9,3))
#设置子图
ax[0].plot(x,x**2,'bo-')
ax[0].set_title("y=x^2")
ax[0].set_xlabel("x")
ax[0].set_ylabel("x^2")
ax[0].grid(color='b', ls = '-.', lw = 0.25)ax[1].plot(x,x**3,'rH-.')
ax[1].set_title("y=x^3")
ax[1].set_xlabel("x")
ax[1].set_ylabel("x^3")
ax[1].grid(color='k', ls = '-', lw = 0.15)ax[2].plot(x,x*2,'mD:')
ax[2].set_title("y=x*2")
ax[2].set_xlabel("x")
ax[2].set_ylabel("x*2")
ax[2].grid(color='r', ls = ':', lw = 0.35)plt.tight_layout()
plt.show()

2.5 坐标轴设置 2.5.1 对数刻度设置

在数据范围广的时候,往往采用对数刻度,代码如下:

ax.xscale("log")或ax.yscale("log")

示例代码

import matplotlib.pyplot as plt
import numpy as np#数据
x = np.arange(1,9,1)
#创建画布和子图
fig, ax = plt.subplots(1, 2, figsize=(10,4))
#绘图
ax[0].plot(x,x)
ax[0].set_title("Normal scale")
ax[0].set_xlabel("x axis")
ax[0].set_ylabel("y axis")ax[1].set_yscale("log")
ax[1].plot(x,x)
ax[1].set_title("Logarithmic scale (y)")
ax[1].set_xlabel("x axis")
ax[1].set_ylabel("y axis")plt.tight_layout()
plt.show()

2.5.2 坐标轴颜色,线宽设置

通过ax.获取坐标轴字典,坐标轴包括4个:上下左右。可以通过,设置颜色和线宽。示例代码如下:

    fig = plt.figure()ax = fig.add_axes([0.2, 0.2, 0.7, 0.7])ax.spines['bottom'].set_color('red')ax.spines['left'].set_linewidth(2)ax.spines['right'].set_color(None)ax.spines['top'].set_color(None)ax.plot([1, 2, 3, 4, 5])plt.show()

2.5.3 坐标轴范围

通过,实现。

#设置y轴
a1.set_ylim(0,10000)
#设置x轴
a1.set_xlim(0,10)

2.5.4 坐标轴刻度,刻度标签

对于坐标轴的刻度,通过或实现;对于坐标轴的刻度标签,在设置好坐标轴刻度的前提下,将标签与刻度一一对应,采用或进行设置。示例代码如下:

    #数据x = np.arange(0, math.pi * 2, 0.05)#生成画布对象fig = plt.figure()# 添加绘图区域ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])#绘图ax.plot(x, np.sin(x))#设置x轴标签ax.set_xticks([0, 2, 4, 6])# 设置x轴刻度标签ax.set_xticklabels(['zero', 'two', 'four', 'six'])# 设置y轴刻度ax.set_yticks([-1, 0, 1])plt.show()

同时,通过plt.(=7)可以设置标签刻度的字体大小。

或者plt.(‘y’,=“#”)可以设置标签的颜色和更改坐标轴类型。

2.6 字体设置问题

一般论文采用中文宋体和英文Times New Roman字体,参考博客:字体设置进行了字体设置。

【方法一】

def draw01():plt.rcParams['font.sans-serif'] = ['SongNTR'] ##设置字体plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题year = [2017, 2018, 2019, 2020]people = [20, 40, 60, 70]#生成图表plt.plot(year, people)plt.xlabel('年份')plt.ylabel('人口')plt.title('人口增长-1')#设置纵坐标刻度plt.yticks([0, 20, 40, 60, 80])#显示图表plt.show()

【方法二】

def draw02():plt.rcParams['font.sans-serif'] = ['Times New Roman']plt.rcParams['axes.unicode_minus'] = Falseyear = [2017, 2018, 2019, 2020]people = [20, 40, 60, 70]#生成图表plt.plot(year, people)plt.xlabel('年份',fontproperties='simsun')plt.ylabel('人口',fontproperties='simsun')plt.title('人口增长-2',fontproperties='simsun')#设置纵坐标刻度plt.yticks([0, 20, 40, 60, 80])#显示图表plt.show()

2.7 文本和箭头设置 2.7.1 文本设置

Axes.text(x, y, s, fontdict=None, **kwargs)

参数:

【举例】

可以指定以坐标轴坐标表示的文本((0,0)为左下,(1,1)为右上角)。下面的例子将文本放在坐标轴的中心

text(0.5, 0.5, 'matplotlib', horizontalalignment='center',verticalalignment='center', transform=ax.transAxes,color='r')

=ax.可以让文字的位置坐标针对于坐标轴的相对比例进行定位,color可以修改文本颜色

2.7.2 箭头设置

Axes.arrow(x, y, dx, dy, **kwargs)

增加一个箭头,从(x, y) 到(x+dx, y+dy)

参数:

举例:

ax.arrow(0.1,0.7,0,0.15,shape='full',width=0.025,head_width=0.05,fc="#FF2727",alpha=0.5,ec=None,linewidth=0)

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了