Matplotlib的基本使用
程序员文章站
2022-03-20 17:57:19
...
学习资源:https://www.bilibili.com/video/av16378354/
一、基本用法
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-1,1,50)
y=2*x+1
plt.plot(x,y)
plt.show()
二、figure 图像
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-1,1,50)
y1=2*x+1
y2=x**2+3
plt.figure()#一个窗口
plt.plot(x,y1)
plt.figure()#第二个窗口
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=10,linestyle='--')#显示在同一个窗口下
#color : 线条的颜色,linewidth : 线条的宽度, linestyle : 线条的样式
plt.show()
三、设置坐标轴
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1, 1, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
plt.plot(x, y2)
plt.plot(x, y1, color='red', linewidth=1, linestyle='--') # 显示在同一个窗口下
# one
plt.xlim((-1, 2)) # 设置x坐标轴的范围
plt.ylim((-2, 3)) # 设置y坐标轴的范围
# two
plt.xlabel('i am x') # 设置x轴的标签
plt.ylabel('i am y') # 设置y轴的标签
# three
# 改变x轴的下标
new_ticks = np.linspace(-1, 2, 5)
print(new_ticks)
plt.xticks(new_ticks)
# 同理y轴的下标也可以这样改变可以
plt.yticks([-2, -1.8, -1, 1.22, 3], ['really bad', 'bad', 'normal', 'good', 'really good']) # 改变为其他的标签
# four
# gca='get current axis' 获取当前的轴
ax=plt.gca()#'top','bottom','left','right'对应四条轴
#将右边和顶部的轴设置为不可见
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')#x轴用底部的轴代替
ax.yaxis.set_ticks_position('left')#y轴用左边的轴代替
#挪动位置
ax.spines['bottom'].set_position(('data',-1))#x轴对应y轴的-1位置
ax.spines['left'].set_position(('data',0))#y轴对应x轴的0位置
plt.show()
四、Legend 图例
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1, 1, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
# one
plt.xlim((-1, 2)) # 设置x坐标轴的范围
plt.ylim((-2, 3)) # 设置y坐标轴的范围
# two
plt.xlabel('i am x') # 设置x轴的标签
plt.ylabel('i am y') # 设置y轴的标签
# three
# 改变x轴的下标
new_ticks = np.linspace(-1, 2, 5)
print(new_ticks)
plt.xticks(new_ticks)
# 同理y轴的下标也可以这样改变可以
plt.yticks([-2, -1.8, -1, 1.22, 3], ['really bad', 'bad', 'normal', 'good', 'really good']) # 改变为其他的标签
#-----------------------
#做一个图例
plt.plot(x, y2,label='up')#label 就是给数据取一个名字
plt.plot(x, y1, color='red', linewidth=1, linestyle='--',label='down')
plt.legend(loc='best')#显示图例,best-->放在最好的位置
plt.show()
五、Annotation 标注
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y = 2 * x + 1
plt.figure()
plt.plot(x, y)
ax = plt.gca() # 获取当前的轴
ax.spines['right'].set_color('none') # 将此轴颜色设置为无
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom') # x轴用底部的轴代替
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0)) # 将x轴对应y轴的0坐标处
ax.spines['left'].set_position(('data', 0)) # y轴对应x轴的0坐标处
x0 = 1
y0 = 2 * x0 + 1
plt.scatter(x0, y0, s=50, color='b') # 显示出这个点
plt.plot([x0, x0], [y0, 0], linewidth=2, linestyle='--') # (x0,y0),(x0,0)两点间的线段
# ----------------
# 添加标注
# method1
'''
annotate(s, xy, xytext=None, xycoords='data',textcoords='data', arrowprops=None, **kwargs)
s : 描述的内容
xy : 加描述的点
xycoords : 要描述的点是基于那个数据的
xytext : 标注的位置,xytext=(30,-30),表示从标注点x轴方向上增加30,y轴方向上减30的位置
textcoords='offset points' 标注的内容从xy设置的点进行偏移xytext
textcoords='data' 标注内容为xytext的绝对坐标
fontsize : 字体大小
arrowstyle : 箭头样式'->'指向标注点 '<-'指向标注内容 还有很多'
'->' head_length=0.4,head_width=0.2
'-[' widthB=1.0,lengthB=0.2,angleB=None
'|-|' widthA=1.0,widthB=1.0
'-|>' head_length=0.4,head_width=0.2
'<-' head_length=0.4,head_width=0.2
'<->' head_length=0.4,head_width=0.2
'<|-' head_length=0.4,head_width=0.2
'<|-|>' head_length=0.4,head_width=0.2
'fancy' head_length=0.4,head_width=0.4,tail_width=0.4
'simple' head_length=0.5,head_width=0.5,tail_width=0.2
'wedge' tail_width=0.3,shrink_factor=0.5
'''
plt.annotate('2x+1=%s' % y0, xy=(x0, y0), xycoords='data',xytext=(+30, -30),\
textcoords='offset points',arrowprops=dict(arrowstyle='->'))
#method2
plt.text(-1,3,'hello',fontdict={'size':20,'color':'green'})
plt.show()
六、axis tick 能见度
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y = 0.1*x
plt.figure()
# 在 plt 2.0.2 或更高的版本中, 设置 zorder 给 plot 在 z 轴方向排序
plt.plot(x, y, linewidth=10, zorder=1)#zorder=1时能将被线条覆盖掉的坐标显示出来
plt.ylim(-2, 2)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))
#设置轴标记的能见度
for label in ax.get_xticklabels()+ax.get_yticklabels():#获得所有的轴标记
label.set_fontsize(12)#设置轴标记字体大小
#bbox设置目的内容的透明度相关参数
#facecolor调节 box 前景色,edgecolor 设置边框, 本处设置边框为无,alpha设置透明度
label.set_bbox(dict(facecolor='white',edgecolor='None',alpha=0.7))
plt.show()
上一篇: kafka中文文档topic配置参数