一、matplotlib库的使用
import matplotlib.pyplot as plt
pyplot的绘制图像
import matplotlib.pyplot as plt
plt.plot([0, 2, 4, 6, 8], [3, 1, 4, 5, 2])
plt.ylabel("Grade")
plt.axis([-1, 10, 0, 6])
plt.savefig('test', dpi=600)
plt.show()
pyplot的绘图区域
plt.subplot(nrows,ncols,plot_number)
import numpy as np
import matplotlib.pyplot as plt
def f(t):
return np.exp(-t) * np.cos(2*np.pi*t)
a = np.arange(0.0, 5.0, 0.02)
plt.subplot(211)
plt.plot(a, f(a))
plt.subplot(2, 1, 2)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.savefig('test2', dpi=600)
plt.show()
二、pyplot的plot()函数
plot()函数
plt.plot(x,y,format_string,**kwargs)
- x:x轴数据,列表或数组,可选。
- y:y轴数据,列表或数组。
- format_string:控制曲线的格式字符串,可选。
- **kwargs:第二组或更多(x,y,format_string)
绘制多条曲线时,各条曲线的x不能忽略。
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(10)
plt.plot(a, a*1.5, a, a*2.5, a, a*3.5, a, a*4.5)
plt.savefig('test0', dpi=600)
plt.show()
控制曲线风格
format_string:控制曲线的格式字符串,可选。
由颜色字符 、风格字符、标记字符组成。
颜色符号 |
说明 |
颜色符号 |
说明 |
'b' |
蓝色 |
'm' |
洋红色 |
'g' |
绿色 |
'r' |
红色 |
'c' |
青绿色 |
'y' |
黄色 |
'k' |
黑色 |
'w' |
白色 |
'#008000' |
RGB某颜色 |
'0.8' |
灰度值字符串 |
风格字符 |
说明 |
'-' |
实线 |
'--' |
破折现 |
'-.' |
点划线 |
':' |
虚线 |
'' ' ' |
无线条 |
标记字符 |
说明 |
标记字符 |
说明 |
标记字符 |
说明 |
'.' |
点标记 |
'1' |
下花三角标记 |
'h' |
竖六边形标记 |
',' |
相熟标记(极小点) |
'2' |
上花三角标记 |
'H' |
横六边形标记 |
'o' |
实心圈标记 |
'3' |
左花三角形标记 |
'+' |
十字标记 |
'v' |
倒三角标记 |
'4' |
右花三角标记 |
'x' |
x标记 |
'^' |
上三角标记 |
's' |
实心方形标记 |
'D' |
棱形标记 |
'>' |
右三角标记 |
'p' |
实心五角标记 |
'd' |
瘦菱形标记 |
'<' |
左三角标记 |
'*' |
星形标记 |
'I' |
垂直线标记 |
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(10)
plt.plot(a, a*1.5, 'go-', a, a*2.5, 'rx', a, a*3.5, '*', a, a*4.5, 'b--')
plt.savefig('test3', dpi=600)
plt.show()
plt.plot(x,y,format_string,**kwargs)
- **kwargs:第二组或更多(x,y,format_string)
color:控制颜色,color='green'
linestyle:线条风格,linestyle='dashed'
marker:标记风格,marker='0'
markerfacecolor:标记颜色,markerfacecolor='blue'
markersize:标记尺寸,markersize=20
...
三、pyplot的中文显示
方法一(不用)
用rcParams修改字体实现
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
plt.plot([3, 1, 4, 5, 2])
plt.ylabel("纵轴(值)")
plt.savefig('test00', dpi=600)
plt.show()
rcParams的属性
属性 |
说明 |
'font.family' |
用于显示字体的名字 |
'font.style' |
字体风格,正常'normal'或斜体'italic' |
'font.size' |
字体大小,整数字号或者'large'、'x-small' |
rcParams['font.family']
中文字体 |
说明 |
'SimHei' |
中文黑体 |
'Kaiti' |
中文楷体 |
'LsSu' |
中文隶书 |
'FangSong' |
中文仿宋 |
'YouYuan' |
中文幼体 |
'STSong' |
华文宋体 |
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']="SimHei"
matplotlib.rcParams['font.size']=20
a = np.arange(0.0, 5.0, 0.02)
plt.xlabel('横轴:时间')
plt.ylabel('纵轴:振幅')
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.show()
第二种方法
在有中文输出的地方,增加一个属性:fontproperties
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(0.0, 5.0, 0.02)
plt.xlabel('时间', fontproperties='SimHei', fontsize=20)
plt.ylabel('振幅', fontproperties='SimHei', fontsize=20)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.savefig('test02',dpi=400)
plt.show()
四、pyplot的文本显示
pyplot的文本显示函数
函数 |
说明 |
plt.xlabel() |
对x轴增加文本标签 |
plt.ylabel() |
对y轴增加文本标签 |
plt.title() |
对图形整体增加文本标签 |
plt.text() |
在任意位置增加文本 |
plt.annotate() |
在图形中增加带箭头的注释 |
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.xlabel('时间', fontproperties='SimHei', fontsize=20, color='green')
plt.ylabel('振幅', fontproperties='SimHei', fontsize=20)
plt.title(r'正弦波实例 $y=cos(2\pi x)$', fontproperties='SimHei', fontsize=25)
plt.text(2, 1, r'$\mu=100$', fontsize=15)
plt.axis([-1, 6, -2, 2])
plt.grid(True)
plt.show()
plt.annatate(s,xy=arrow_crd,xytext=text_crd,arrowprops=dict)
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.xlabel('时间', fontproperties='SimHei', fontsize=20, color='green')
plt.ylabel('振幅', fontproperties='SimHei', fontsize=20)
plt.title(r'正弦波实例 $y=cos(2\pi x)$', fontproperties='SimHei', fontsize=25)
plt.annotate(r'$\mu=100$', xy=(2, 1), xytext=(3, 1.5),
arrowprops=dict(facecolor='black', shrink=0.1, width=2))
plt.axis([-1, 6, -2, 2])
plt.grid(True)
plt.show()
五、pyplot的子绘图区域
plt.subplot2grid()
plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)
- 理念:设定网格,选中网格,确定选中行列区域数量,编号从0开始。
GridSpec类
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(3, 3)
ax1 = plt.subplot(gs[0, :])
ax2 = plt.subplot(gs[1, :-1])
ax3 = plt.subplot(gs[1:, -1])
ax4 = plt.subplot(gs[2, 0])
ax5 = plt.subplot(gs[2, 1])
六、基础绘图函数
饼图plt.pie()
import matplotlib.pyplot as plt
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=90)
plt.axis('equal') #是否为扁饼图
plt.show()
直方图plt.hist()
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
mu, sigma = 100, 20 #均值和标准差
a = np.random.normal(mu, sigma, size=100)
plt.hist(a, 10, narmed=1, histtypt='stepfilled', facecolor='b', alpha=0.75)
# 10 bin:直方图的个数
plt.title('Histogram')
plt.show()
极坐标图
import numpy as np
import matplotlib.pyplot as plt
N = 10
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = 10 * np.random.rand(N)
width = np.pi / 2 * np.random.rand(N)
ax = plt.subplot(111, projection='polar')
bars = ax.bar(theta, radii, width=width, bottom=0.0)
for r, bar in zip(radii, bars):
bar.set_facecolor(plt.cm.viridis(r / 10.))
bar.set_alpha(0.5)
plt.show()
散点图
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(10*np.random.randn(100), 10*np.random.randn(100), 'o')
ax.set_title('Simple')
plt.show()