(一)一个线图的创建
1.给出数据
import numpy as np
x=np.arange(0,12.1,0.2)
y=np.sin(x)
2.画出图形,你只需要plt.plot(x,y)
import matplotlib.pyplot as plt
plt.plot(x,y) 这里的y不是必须的。
这时候,你只得到下面这样的图形
这样的图形太单调了,我喜欢五彩缤纷的灰
plt.plot(x,y,color='red',linestyle='-',linewidth=3,marker='^',\
markeredgecolor='green',markerfacecolor='red',markersize=3,\
label='wodetu',zorder=1)
(1)color: 颜色,更多颜色尽在官网https://matplotlib.org/stable/gallery/color/named_colors.html
(2)linestyle:线形。 各种线性全部展示https://matplotlib.org/stable/gallery/lines_bars_and_markers/linestyles.html
(3)linewidth:线的粗细
(4)marker:数据点,通过不同性状的marker表示。
全部marker都在:https://matplotlib.org/stable/api/markers_api.html
(5)markeredgecolor:marker的表面颜色
(6)markerfacecolor:marker的内在颜色
(7)markersize:marker的大小
(8)label:将会展示在图例里的内容
(9)zorder:如果你有多条线,那么zorder决定了哪一条线在上面。
看看这红配绿赛狗屁的图
3.这就完了?但是你不喜欢黑色的刻度,你想要不同的style
(1)你需要先把当前的轴提取出来 tu1=plt.gca()
gca代表的是 Get the current Axes,x,y轴为axis,复数为axes
(2)然后设置轴的刻度,轴的小刻度,以及轴刻度上的名称
tu1.set_xticks([0,2.5,7,11])
(3)你觉得数字不fancy?你想给他们加密?给你的x轴的刻度们换几个单独的名字
tu1.set_xticklabels(['A','J','W','K'])
(4)如果你想x轴和y轴的小刻度一起设置?
tu1.tick_params(axis='both',direction='in',color='blue',length=10,width=2)
axis是x轴和y轴的刻度设置
direction表示刻度是朝里还是朝外
color代表刻度颜色
length代表刻度长度
width代表刻度宽度
看我这湛蓝的刻度,像一汪海水,把你淹没
4. 你想要更花里胡哨的功能,那你需要加入其他元素:
如果你需要加入网格线,设定x,y轴,创建画布大小,添加图例,保存图片,则可以通过下面的代码设定
(1)创建画布大小 plt.figure(figsize=(10,5)) 这不是什么必须的步骤
(2)设定x轴和y轴范围 plt.axis([-1,6,-2,2]) 也可以是别的什么数字,看你的幸运数字是多少了
(3)x轴设定名称,字体,字体大小。plt.xlabel('x axis',fontproperties='SimHei',fontsize=20)
('x axis'是x轴的名称,你可以写任意名称,喊他金角大王都可以
fontsize是字体大小,
fontproperties='SimHei' 是字体类型,这里是黑体
(4)y轴设定名称,字体,字体大小。plt.ylabel('y axis',fontproperties='SimHei',fontsize=20)
(5)给你的图像加个名字。plt.title('Picture',fontname='Arial',fontsize=30,weight='bold',style='italic')
fontname是英文的那些字体类型,这里是Arial类型
weight这里表示粗体
style=‘italic’表示斜体
(6)添加网格线,plt.grid(True)
(7)添加图例 plt.legend(loc='best'),也可以是‘upper left’ , 'bottom right'
(8)紧致的布局,当你储存完图像发现少了一半的时候,你就该想起来用这个紧致的布局了plt.tight_layout()
(9)保存图像,路径加上DPI,DPI越大越清晰,占内存越大,打开越漫长。。。plt.savefig('D:\\try\\tu.png',dpi=300)
大功告成,好像还缺点什么?我想起来了,好像还可以加点注释嘛!
5.来点不太常用的功能,给图片加注释和文字
(1)加文字,plt.text(5,0,'wenzi',fontsize=15)
这里的5代表x轴对应的5,
0代表的是y轴对应的0,
’wenzi‘是你想要注释的问题
fontsize是字体大小
(2)加注释,plt.annotate('zhushi',xy=(2,1),xytext=(3,1.5),arrowprops=dict(facecolor='black',shrink=0.1,width=2))
1.首先是你想要注释的内容
2. xy=(2,1)对应的是x,y轴上的位置
3. xytext=(3,1.5)对应的是第一个注释的内容对应的x,y轴上的位置
4. arrowprops代表箭头的属性,颜色是黑色,shrink是键柄的长短,width剑柄宽度是2
import matplotlib.pyplot as plt
import numpy as np
#先给你一组数据,这个随机
x=np.arange(0,12.1,0.2)
y=np.sin(x)
#----------------------------------------------------------------------------------
#开始画图
#从最基本的开始,创建一个画布,当然这个不是必须的,长度为10,高度为5
plt.figure(figsize=(10,5))
#加入数据,Y不是必须的
plt.plot(x,y,color='red',linestyle='-',linewidth=3,marker='^',\
markeredgecolor='green',markerfacecolor='red',markersize=3,\
label='wodetu',zorder=1)
#----------------------------------------------------------------------------------
#当前的轴提取出来
tu1=plt.gca()
#给你的x轴的刻度们减少几个
tu1.set_xticks([0,2.5,7,11])
#你觉得数字不fancy?你想给他们加密?给你的x轴的刻度们换几个单独的名字
tu1.set_xticklabels(['A','J','W','K'])
#想x轴和y轴一起设置
tu1.tick_params(axis='both',direction='in',color='blue',length=10,width=2)
#----------------------------------------------------------------------------------
#设定x轴和y轴的大小,当然也不是必须的
plt.axis([-1,6,-2,2])
#添加网格线,也不是必须的
plt.grid(True)
#添加图例
plt.legend(loc='best')
#x轴设定名称,字体,字体大小
plt.xlabel('x axis',fontproperties='SimHei',fontsize=20)
#y轴设定名称,字体,字体大小
plt.ylabel('y axis',fontproperties='SimHei',fontsize=20)
#设定图形名称
plt.title('Picture',fontname='Arial',fontsize=30,weight='bold',style='italic')
#紧致的布局,当你储存完图像发现少了一半的时候,你就该想起来用这个紧致的布局了
plt.tight_layout()
#保存图像,路径加上DPI,DPI越大越清晰,占内存越大,打开越漫长。。。
plt.savefig('D:\\try\\tu.png',dpi=300)
#----------------------------------------------------------------------------------
#加文字,这里的5代表x轴对应的5,0代表的是y轴对应的0,’wenzi‘是你想要注释的问题,然后字体大小
plt.text(5,0,'wenzi',fontsize=15)
#加入注释
plt.annotate('zhushi',xy=(2,1),xytext=(3,1.5),arrowprops=dict(facecolor='black',shrink=0.1,width=2))