导入matplotlib第三方库
此外,在matplotlib中我们可以只输入y轴,即为只输入一个数组我们也可以输出,x不为必要条件。而且也可以使用plt.xticks()函数进行设置x轴的label。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 可以正常显示中文
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
plt.tight_layout() # 为了正常显示一些图表被遮盖或者不完全显示的问题
import random
import numpy as np
理解axes,figure,plot和对应函数
axis,axes,figure的区别
简单来说,axis为坐标轴,axes为画图的时候一个添加的子区域,figure为一个绘制图片的一个画布。具体区分如图所示。
ax,figure,plot的区别
ax如上所示,一般代表的是一个axes区域。即为figure上的一个子模块,但是一般用plt.plot()的时候是获取当前的axes进行使用的。
figure是一个话的话,ax为其中的一个元素如花等。即为figure包含ax。
plot()为一个最基础的绘图函数,我们一般都在这个绘图函数上加入横纵坐标数据。
ax和figure一般用下列三种方法生成。具体如代码所示。
# ax代码生成一般主要有以下三种方法
fig = plt.figure()
ax = fig.add_subplot(2, 2, 1)
ax = plt.subplot(2, 2, 1)
fig, ax = plt.subplots(2, 2) # 此时的ax为一个列表,List[list[axes]]
# fig生成一般有以下两种方法
fig = plt.figure()
fig, ax = plt.subplots(2, 2) # 此时的ax为一个列表,List[list[axes]]
ax_1 = ax[0,0]
ax_2 = ax[0,1]
x = np.random.randn(10)*10
y = np.random.randn(10)*10
ax_1.plot(x, y)
ax_2.plot(x, y)
plt.subplots()函数(生成figure和axes的列表对象)
plt.subplots函数具体为生成一个figure画布和多个axes子区域。
fig, ax = plt.subplots(2,2)# 这里代表的是生成一共有四个axes的figure,即为一个画布上有四个对象,而且ax为第一个对象
# 2,2,1 代表将整个图像窗口分为两行两列,而且当前位置为1,
# 此时的ax为可以选择ax[0,0][0,1][1,0][1,1],但没有办法加入plt.subplots(2,2,1)
ax_2 = fig.add_subplot(2,2,1)
plt.subplot()函数(生成axes对象)
这里的话主要是进行添加axes区域的,个人理解是直接调用现有的figure对象直接在figure上进行操作。如果没有fig = plt.figure(),会自动生成一个figure对象。
# fig = plt.figure()
ax = plt.subplot(2,2,1)
ax.plot(x,y)
plt.figure()函数(生成figure对象)
plt.figure()为生成一个figure,参数为name,figsize()等具体如图所示。
figure(name=int|str, figsize(width, height)),
name如果相同即为画在同一个axes对象中,如果name不同,重新绘制一个figure对象
figsize主要是控制figure的尺寸大小,width为宽度,height为高度
fig = plt.figure(1, figsize(10,8))
x = np.random.randn(10)*10
y = np.random.randn(10)*10
plt.plot(x, y)
fig.add_subplot()函数(个人认为最方便和最佳)
这里的话一般是放置在已经生成figure的前提下,效果会好很多,个人更推荐用这种方法。
fig = plt.figure()
ax = fig.add_subplot(2,2,1)
ax.plot(x,y)
plt.plot()函数和对应画出图像的线条,点型,颜色
plt.plot(color='', linestyle='', marker='',markerfacecolor='', markersize='')
'''
color代表线段颜色
linestyle代表线段的类型
marker代表线段上的对应点的标识
markerfacecolor为标记(marker)的颜色
markersize为标记(marker)的尺寸
里面都需用''引号
'''
主要为绘制一个简单的线形图,而且参数一般为(x,y)即为x轴的数据和y轴的数据,此外还有一些特殊的图例,需要到后面解释和介绍,比如画出直线,虚线,还有显示点的坐标的形状等等。
本题目主要介绍的是画出图像对应的线条,点型和颜色。
plot(x, y, 'fmt')
fmt主要分为三个参数,即为color,marker(点型),线形(linestyle)
plot(x, y, color='blue',marker='o', linestyle='-')
颜色主要如下所示,也可以用#0000的十六进制表示颜色
'b' blue 蓝色,'g' green 绿色, 'r' red 红色,'c' cyan 蓝绿,
'k' black 黑色, 'w' white 白色,'m' magenta 洋红, 'y' yellow 黄色
对于其中点的形状主要如下所示。
'.' 为圆点, ',' 为pixel marker, 'o'为空心圆点, '^'为上三角形,
'v'为下三角形,'<'为左三角形,'>'为右三角形,'+'为十字标记,'x'为x标记
'D'为菱形标记,'*'Wie星形标记,'d'为瘦菱形标记,'|'为垂直线标记
对于linestyle主要有以下格式
'-'为实线,'--'为虚线,'-.'为点画线,即为一个点一个线交替,
':'为点线,即为全部由点构成
plt.show()函数
plt.show()函数比较简单,即为呈现所有的figure的图像。一般我们绘制出图片之后即可进行plt.show()调用之后进行可视化呈现。
plt.legend()函数
主要是运用调用pyplot函数的图例进行,我们这里理解的图例为如下图所示,简单应用如下,而且loc默认会选择最合适的位置进行放置。
x = np.random.randn(10)*10
y = np.random.randn(10)*10
plt.figure(num=1, figsize=(4,4))
plt.plot(x)
plt.plot(y,'r-^')
plt.legend(['one','two']) # 这里参考具体当前figure里面有几条线就用几个图例
plt.show()
常见具体参数如下
plt.legend(loc='upper center') 这里的uppe是偏上方的意思,即为一般lower为偏下方,具体如下所示。一般默认是用0,即为选择最优的位置放置。
0: ‘best' 1: ‘upper right' 2: ‘upper left' 3: ‘lower left'
4: ‘lower right' 5: ‘right' 6: ‘center left' 7: ‘center right'
8: ‘lower center' 9: ‘upper center' 10: ‘center'
plt.legend(fontsize=int|float)为设置图例大小的数值
plt.legend(frameon=False)为去除图例边框,即为修改图例边框。
plt.legend(edgecolor='blue')设置图例边框颜色。
plt.legend(facecolor='blue')设置图例背景颜色,如果没有边框即为参数无效。
plt.axis()函数
plt.axis([xmin, xmax, ymin, ymax])参数具体可以放置四个数值,即为xmin,xmax,ymin,ymax,即为横纵坐标的最小值和最大值。
其他参数具体如下。
'on'显示坐标轴和坐标轴标签,
'off'为不显示坐标轴和坐标轴标签
具体效果如下图所示。很明显能够看出差距,而且我们可以设置具体
设置坐标轴刻度函数(xlim(), ylim()函数)
xlim(0,10)使得x坐标轴从0-10范围内可视化。
ylim(0,10)使得y坐标轴从0-10范围内可视化。
设置坐标轴的label(xlabel(), ylabel())函数
一般比较常用的是设置label的标签,即为我们在x,y轴上看到的说明或者汉字,常见的有以下参数,value,fontdict,loc。
loc:'left','right', 'center'
value:需要的文字
fontdict:设置字典样式,具体例子为如下fontdict={'fontsize': 10, 'fontstyle': 'oblique', 'color': 'red', 'fontfamily': 'fantasy'}
mathplotlib设置中文,负号正常显示
plt.rcParams['font.sans-serif'] = ['SimHei'] # 可以正常显示中文
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
plt.tight_layout() # 为了正常显示一些图表被遮盖或者不完全显示的问题
mathplotlib自定义坐标轴间隔
from matplotlib.pyplot import MultipleLocator
figure = plt.figure()
ax = figure.add_suplot(221)
number = 0.3 # 这里的话适用于所有的坐标轴间隔,我这里设置默认为10
x_major_locator=MultipleLocator(number)
# matplotlib 关于使用 MultipleLocator 自定义刻度间隔
ax.xaxis.set_major_locator(x_major_locator) # 这两个为设置坐标轴的间隔是否,而且为自己手动调整,需要导入MultipleLocator
在figure和ax对象加入标题titile
plt.title('xxx')
ax.set_title('xxx')
参考
Matplotlib中的plt和ax画图的区别
matplotlib.pyplot.plot()参数详解
https://blog.csdn.net/helunqu2017/article/details/78659490
https://www.cnblogs.com/lfri/p/12248629.html