目录
引言
plot函数
(1)简单的举例说明
(2)参数说明
1. marker(标记样式字符串)
2. color(颜色)
3. linestyle 和 linewidth
(3)一个简便的写法
(4)一个图上画多条线
(5)通用的图形的美化补充
1. 标题
2. x轴 - y轴命名
3. 图例
总结
系列文章学习:
python—matplotlib库系列学习(一):plot函数
在学习时,我主要了参考了下面的网站,大家也可以自行去学习!而且这篇文章跟偏向于新手去进行学习,大佬看这个文章的内容肯定都是小儿科啦~~,当然这篇文章也比较方便我自己后续画图的时候直接就找参数什么的,算是一个比较系统的文章啦。希望可以帮到大家,有什么问题还请多多批评指正,我也是在不断进步的。
文章的内容可能比较多,大家依据目录可以更好的找到想要的,如有转载,请表明出处,谢谢~
作为一个系列文章,我也是会不断更新的。不然一次性要写太多啦,部分函数会随着后续的更新补充进来。
matplotlib — Matplotlib 3.7.1 documentationhttps://matplotlib.org/stable/api/matplotlib_configuration_api.html
我们先看一个简单的代码:
import matplotlib.pyplot as plt
plt.plot([1,2])
plt.show()
这画出了一个非常简单的图像,注意里面的[1,2]代表的是纵坐标从1到2,所以实际上plot函数中只需要一个y的参数就可以画图了。
那我们赋予了y坐标,这个x坐标是怎么确定的呢?大家观察可以发现x轴是从0开始,数组中有两个数,所以到了1。我们在举个例子,假如数组里面有8个数:
import matplotlib.pyplot as plt
plt.plot([1,2,5,10,19,56,64,80])
plt.show()
我们发现x轴确实是按照数组中元素的个数从0开始,当然如果想自己定义x轴的坐标,我们在前面加上就行,前面的参数代表x轴,后面的参数代表y轴:
import matplotlib.pyplot as plt
plt.plot([1,2,3,4],[1,2,3,8])
plt.show()
但是这么一个图也太丑了,我们可以为其增加各种参数来美化完善我们的图形~ 如下代码:
import matplotlib.pyplot as plt
plt.plot([1,2,3,4],[1,2,3,8],color='green', marker='o', linestyle='dashed',
linewidth=2, markersize=12)
plt.show()
是不是感觉比上一次要好看多了,在这里我加了很多plot函数包含的参数,我接下来将一一给大家讲解说明,而且也有很多参数对于matplotlib中其他绘图函数也是适用的。
除了上面提到的x,y之外,比较常用的参数有marker、color、linestyle等,我们一个一个来说
import matplotlib.pyplot as plt
x = [1,2,3]
y = [1,2,3]
plt.plot(x,y, marker='o',color='r')
plt.show()
他可以定义每个点的样式,比如上述的'o'表示的就是一个圆,它还有很多其他样式:
|
point marker(点标识) |
|
pixel marker(像素标识) |
|
circle marker(圆标识) |
|
triangle_down marker(倒三角形标识) |
|
triangle_up marker(正三角形标识) |
|
triangle_left marker(左三角形标识) |
|
triangle_right marker(右三角形标识) |
|
tri_down marker |
|
tri_up marker |
|
tri_left marker |
|
tri_right marker |
|
octagon marker |
|
square marker |
|
pentagon marker |
|
plus (filled) marker |
|
star marker(星星三角形标识) |
|
hexagon1 marker |
|
hexagon2 marker |
|
plus marker |
|
x marker |
|
x (filled) marker |
|
diamond marker(钻石.....其实就是菱形标识) |
|
thin_diamond marker |
|
vline marker |
|
hline marker |
剩下的大家自己去尝试把~ 与marker相配套的还有下面很多参数:
markeredgecolor or mec |
color(边框的颜色) |
markeredgewidth or mew |
float (边框的宽度) |
markerfacecolor or mfc |
color(内部的颜色) |
markerfacecoloralt or mfcalt |
color(我也不知道啥意思,但用的不多可以忽略它) |
markersize or ms |
float (标记样式的大小) |
举个例子,大家结合上面的含义一看便知啦:
import matplotlib.pyplot as plt
x = [1,2,3]
y = [1,2,3]
plt.plot(x,y, marker='o',color='black',
markersize=10,markeredgecolor='red',
markerfacecolor='blue',markeredgewidth=3,
)
plt.show()
matplotlib在参考文档说明中给了几个比较基础的颜色:
|
blue |
|
green |
|
red |
|
cyan |
|
magenta |
|
yellow |
|
black |
|
white |
但实际上我在打比赛和科研的时候都不用这些配色,我们可以自己去寻找其他的颜色,下面的文章很好,大家可以去里面找颜色,在color中输入英文代码和十六进制都是可以的!
关于颜色的十六进制对照表 - 菜鸟-传奇 - 博客园 (cnblogs.com)https://www.cnblogs.com/cainiao-chuanqi/p/11301471.html 我们举个例子:
import matplotlib.pyplot as plt
x = [1,2,3]
y = [1,2,3]
plt.plot(x,y, marker='s',color='MediumSpringGreen') #适中的春天的绿色~~
plt.show()
这两个参数大家字面意思就可以理解到,一个是调节画的线的样式,一个是调节线的粗细,我们来举个例子:
import matplotlib.pyplot as plt
x = [1,2,3]
y = [1,2,3]
plt.plot(x,y, marker='o', linestyle='-.' , linewidth = 3)
plt.show()
下面是具体的线的样式:
|
solid line style(实线风格) |
|
dashed line style(虚线风格) |
|
dash-dot line style(点线风格) |
|
dotted line style(正方形点风格) |
我们可以把上述参数中的marker、color和linestyle写在一起,或者他们之间的两两组合,此时他们的的参数名可以省略,并写在一个' '中,我们看下面的例子
import matplotlib.pyplot as plt
x = [1,2,3]
y = [1,2,3]
plt.plot(x,y,'r>--')
plt.show()
上述是把颜色红色、点的样式右三角形和虚线风格放在一起。注意:如果要这么去写,颜色必须要写上述matplotlib在参考文档给出的,否则你就单独把color拿出来写!!!点的风格和线的风格我也都在上面给出了,大家根据需要自己选择。
我们使用plot函数,也可以在一个图上画多条线的,如下:
mport numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题
a = [0,1,2,3,4]
b = [10,9,8,7,6]
c = [1,2,3,4,5]
d = [9,1,8,2,5]
font = { #设置一个后续xy轴和标题使用的字体(包括大小、颜色等)
'color': 'black',
'weight': 'normal',
'size': 20,
}
plt.plot(a, b, 'k--' , a, c, 'k:', a, d, 'k') #重点! 三个线的代码写在一起
plt.legend(('NO.1', 'NO.2', 'NO.3'), #图例
loc='best', shadow=True, fontsize=16)
plt.xlabel('x轴',fontdict=font)
plt.ylabel('y轴',fontdict=font)
plt.title('一张图',fontdict=font)
plt.show()
要画出一个比较美观的图像,单靠上面的调整肯定是不够的,我们还可以给图像加上标题、图例、横纵坐标含义等等,我们接下来就说几个常用的!
先说明一下其中包含的参数,我们在给出代码及说明:
import matplotlib.pyplot as plt
plt.title(label, fontdict=None, loc=None, pad=None , y=None, **kwargs)
#label 指的是你输入标题的名称
#fontdict 指的是使用字典控制文本的外观,例如文本大小,文本对齐方式等
# {fontdict = {‘fontsize’:rcParams [‘axes.titlesize’],
# ‘fontweight’:rcParams [‘axes.titleweight’],
# ‘verticalalignment’:‘baseline’,
# ‘horizontalalignment’:loc}
#loc 指的是标题的位置,例如'center','left','right'等
#pad 指的是标题距轴顶部的偏移量(以磅为单位) float型
#y 指的是标题的垂直轴位置(1.0为顶部),可以为负值,标题会跑到图的底下 float型
#**kwargs 指的是使用其他关键字参数作为文本属性,比如color、fonstyle、linespacing、background等
接下来我们以具体的例子来实践一下:
import matplotlib.pyplot as plt
x = [1,2,3]
y = [1,2,6]
plt.plot(x,y,'c>--')
#plt.title(label="hello world")
plt.title("hello world")
plt.show()
其实,正常情况下,很多都直接定个标题就完事了,上方代码注释部分和下面的代码是一个意思,只是下面把label省略了。在举个例子:
import matplotlib.pyplot as plt
x = [1,2,3]
y = [1,2,6]
plt.plot(x,y,'c>--')
plt.title(label="hello world",loc="left",fontdict={'fontsize':50})
plt.show()
另一个例子:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.0, 5.0, 100)
y = np.cos(2*np.pi*x) * np.exp(-x)
font = {'family': 'serif',
'color': 'darkred',
'weight': 'normal',
'size': 16,
}
plt.plot(x,y)
plt.title(label="Damped exponential decay",loc="right",fontdict=font)
plt.show()
其他的参数大家也可以自己多去尝试,有什么问题随时可以跟我讨论(评论区私信都可以~)
它们分别是xlabel和ylabel!我们还是先说一下他们中的常用参数:
import matplotlib.pyplot as plt
plt.xlabel(xlabel, fontdict=None, labelpad=None, loc=None, **kwargs))
plt.ylabel(ylabel, fontdict=None, labelpad=None, loc=None, **kwargs))
#xlabel或ylabel 指的是你输入x轴或y轴的名称
#labelpad 类型为浮点数,默认值为None,即标签与坐标轴的距离
#loc 指的是x或y轴名称的位置,例如:针对x轴为'center','left','right';针对y轴为'center','top','bottom'
#**kwargs 指的是Text对象关键字属性,用于控制文本的外观属性,如字体、文本颜色等
举个栗子!
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)
plt.plot(t, s)
plt.title(r'$\mathcal{A}\sin(\omega t)$', fontsize=20)
plt.xlabel('Time [s]')
plt.ylabel('Voltage [mV]')
plt.show()
老规矩,看一下它的参数,这里matplotlib说明文档里面给了一大堆,感觉有一些也用不上,我也参考了一些资料选出一些比较常用的:
(2条消息) Python:plt.legend或者ax.legend设置图例的参数详解_缘*的博客-CSDN博客https://blog.csdn.net/qq_35240640/article/details/89478439
import matplotlib.pyplot as plt
plt.legend(loc='lower right', fontsize=12, frameon=True, fancybox=True, framealpha=0.2, borderpad=0.3,ncol=1, markerfirst=True, markerscale=1, numpoints=1, handlelength=3.5)
#loc:图例位置,可取(‘best’, ‘upper right’, ‘upper left’, ‘lower left’, ‘lower right’, ‘right’, ‘center left’, ‘center , right’, ‘lower center’, ‘upper center’, ‘center’) ;若是使用了bbox_to_anchor,则这项就无效了
#fontsize:代表字体大小,int或float或{‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}
#frameon:是否显示图例边框,
#ncol:图例的列的数量,默认为1,
#title:为图例添加标题
#shadow:是否为图例边框添加阴影,
#markerfirst:True表示图例标签在句柄右侧,false反之,
#markerscale:图例标记为原图标记中的多少倍大小,
#numpoints:表示图例中的句柄上的标记点的个数,一般设为1,
#fancybox:是否将图例框的边角设为圆形
#framealpha:控制图例框的透明度
#borderpad:图例框内边距
#labelspacing:图例中条目之间的距离
#andlelength:图例句柄的长度
#bbox_to_anchor:(横向看右,纵向看下),如果要自定义图例位置或者将图例画在坐标外边,用它
比如我在上方画的这张图(如下)就是图例的一个例子,其中best是指在图中最佳位置放置图例。剩下的参数大家也可以多多实验,这样会自己理解更深刻!
当然,上述的学习还有很多函数可以完善我们的图形,我们留在下一次的文章进行说明,并且会讲一个新的图形函数。
希望大家发现问题可以及时指出,我也是在不断学习进步中~~~ 谢谢大家的观看,如果帮到了你还请点个赞~