python扩充库之matplotlib(一)

代码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()理解

你可能感兴趣的:(python)