代码py3测试都可运行,此处不贴图,可自行运行查看结果
1、简介:
Matplotlib 是一个Python 的 2D绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython
2、安装:
windows(题主win10):进入到cmd模式后输入
python -m pip install matplotlib
滚动结束后 在python IDLE中输入import matplotlib 若无报错,则安装成功。
3、常见属性以及函数介绍(matplotlib经常搭配numpy使用,想了解numpy请参考python扩充库之numpy)
3.1 figure()
# Matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象。
# 每一个这样的窗口都有一些属性,例如窗口的尺寸、位置,等等。
使用方法:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y1 = 2*x +1
y2 = x**2
#plot为一个画图函数
plt.figure() #定义一个figure
plt.plot(x,y1)
plt.figure(num = 3,figsize=(8,5)) #num 指定figuer序号 ;figsize()图形尺寸
#在一个figure中显式多条线
plt.plot(x,y2)
plt.plot(x,y1,color='red',linestyle='--') #color = 颜色 ,linewidth = 线宽,linestyle = 线形式
plt.show()
3.2 xlim/ylim xlabel/ylabel等坐标轴常见属性
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y1 = x**2
y2 = x + 1
plt.figure(figsize=(8,5))
plt.plot(x,y1)
plt.plot(x,y2,color='blue',linewidth=1.2,linestyle='dotted')
#xlim ylim x 与 y坐标轴的限度
plt.xlim((-1,2))
plt.ylim((-2,3))
#xlabel ylabel x与y坐标轴的标签
plt.xlabel("x ")
# ,fontproperties=FontProperties(fname='/system/library/fonts/pingfang.tcc')
plt.ylabel('y ')
#xticks yticks设置坐标轴上数据间隔以及标记
new_ticks = np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,3],
[r'$really\ bad$',r'$bad\alpha$',r'$good$',r'really good'])
#$改变字体$ \alpha 特殊字符
#图边框处理
#gca = get current axis
#获得图边框
ax = plt.gca()
#设置图边框颜色
ax.spines['right'].set_color('None')
ax.spines['top'].set_color('none')
#设定默认x 与y轴
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
#设置x轴与y轴相交点
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
plt.show()
对于无法显示中文问题 请 参考
3.3 tick (能见度)操作
#tick 能见度
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,lw=10,zorder=1)
plt.ylim(-2,2)
ax = plt.gca()
ax.spines['right'].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))
#ticks修改参数
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_zorder(2)
label.set_fontsize(12) #修改字体大小
label.set_bbox(dict(facecolor='white',edgecolor='None',alpha=0.7))#alpha表征透明度
plt.show()
3.4 plot 函数位于 matplotlib.pyplot 这个模块中,是绘制图形的主要函数。plot 函数可以接收多组 X 轴、Y 轴数据进行绘图,也可以控制曲线的格式
3.5scatter 散点图
#matplotlib_plot.py
import matplotlib.pyplot as plt
import numpy as np
n = 500
x = np.random.normal(0,1,n) #生成中位数是0, 方差是1 ,n个随机数
y = np.random.normal(0,1,n)
#颜色值
T = np.arctan2(y,x)
plt.figure(figsize=(7,5))
plt.scatter(x,y,s=30,c=T,alpha=0.5)
plt.scatter(np.arange(5),np.arange(5)) #一条线
plt.xlim=(-1.5,1.5)
plt.ylim=(-1.5,1.5)
plt.xticks(())
plt.yticks(())
plt.show()
3.6legend 图例
#图例
import matplotlib.pyplot as plt
import numpy as np
#添加对曲线的描述
x = np.linspace(-3,3,50)
y1 = 2*x +1
y2 = x**2
plt.figure(figsize=(8,5))
plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel('x')
plt.ylabel('y')
new_ticks = np.linspace(-1,2,5)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,3],
[r'$really\ bad$',r'$bad\alpha$',r'$good$',r'really good'])
# 此处注意若使用
# l1 = plt.plot(x,y1,color='red',linestyle='--',label='down')
# print(type(l1)) 则会输出list
# l2 = plt.plot(x,y2,label='up')
# 则会出错
#label添加曲线标签(名字)
l1, = plt.plot(x,y1,color='red',linestyle='--',label='down')
print(type(l1)) #
l2, = plt.plot(x,y2,label='up')
#loc 默认为best 选取一个空闲区显式 handles: 放入legend的对象
plt.legend(handles=[l1,l2,],labels=['aaa','bbb'],loc='best')
plt.show()
3.7 annotion 标注
#annotaion 标注
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y = 2*x +1
plt.figure(num =1,figsize=(8,5))
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.spines['bottom'].set_position(('data',0)) #指定x轴与y轴某点相交点
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
x0 = 1
y0 = 2*x0+1
plt.scatter(x0,y0,s =50,color='r') #scatter散点图 s:点的大小 color:点的颜色
plt.plot([x0,x0],[y0,0],'k--',lw=2.5)
####F1
plt.annotate(r'$2x+1=%s$'%y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points',
fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
####F2
plt.text(-3.7,3,r'$Some\ text\ .\ \mu\ \sigma_i\ \alpha_t$',
fontdict={'size':16,'color':'r'})
plt.show()
先到这,未完待续想了解更多不同类型图像如柱状图,等高图请见python扩充库之matplotlib(二)
numpy.meshgrid()理解