最近进入了低迷期,感觉有点提不起劲,但是还是要加油学习呀。
这是这两天的笔记,明显量下降了很多。
1.图例:显示两条曲线的图例,并测试loc属性
mp.legend(loc = ' ') # best0 upper right/left 1/2 lower right/left
2.特殊点: mp.scatter(xarray,yarray,marker='',s='',edgecolor='',facecolor='',zorder=3)
marker:点型,
s:大小;
edgecolor:边缘色;
facecolor:填充色;
zorder:绘制图层编号(编号越大,图层越靠上)
3.备注:为在某条曲线上的点添加备注,指明函数方程与值(这里api有点多)
mp.annotate(文本内容,xycoords='data',xy=(x,y),textcoords='offset points'偏移位置,xytext=(x,y),fontsize=14文本字母大小,arrowprops=dict()箭头样式)
4.图形对象(图形窗口)
绘制多个窗口:
mp.figure(
' ' 窗口标题栏文本
figsize = (4,3) 窗口大小<元组>
dpi = 120, 像素密度,密度越高越清晰
facecolor = ' ' 图表背景色
)
设置当前窗口的参数
mp.title(title,fontsize = 12 ) # 设置图表标题,显示在图表上方
mp.xlabel(x_label_str,fontsize = 12)# 设置水平轴的文本
mp.ylabel(y_label_str,fontsize = 12)# 设置垂直轴的文本
mp.tick_params(labelsize = 8)# 设置刻度参数
mp.grid(linestyle=' ')# 设置图表网格线
mp..tight_layout() # 设置紧凑布局,将图表相关参数都显示在窗口中
5.子图(一张图显示多张)
5.1矩阵式布局:
mp.figure('Subplot Layout',facecolor='lightgray') # 构建窗口
# 拆分矩阵
mp.subplot(rows,cols,num) # 几行几列的第几数字图 给每个图编号num
5.2网格式布局:支持单元格的合并
# 构建窗口
gs = mg.GridSpec(3,3) # 拆成3行3列
mp.subplot(gs[0, :2]) #合并
mp.text()
5.3自由式布局(不常使用)
6.刻度定位器
ax = mp.gca() # 获取当前坐标轴
ax.xaxis.set_major_locator(mp.NullLocator()) #设置水平坐标轴的主刻度器
ax.xaxis.set_miinor_locator(mp.MultipleLocator(0.1)) #设置水平坐标轴的次刻度器为多点定位器,间隔0.1
7.刻度网格线
ax.grid(
which = ' ', # major/minor 主刻度/次刻度
axis = ' ', # x/y/both 绘制x或y轴
linewidth = 1, # 线宽
linestyle = ' ', # 线型
color = ' ', # 颜色
alpha = 0.5 # 透明度
)
半对数坐标:y轴将以指数方式递增。基于半对数坐标绘制第二个子图
mp.semilogy(y)
8.散点图(!!!)
可以通过每个点的坐标、颜色、大小和形状表示不同的特征值
mp.scatter(
x, # x轴坐标数组
y, # y轴坐标数组
marker=' ', # 点型
s=10, # 大小
color=' ', # 颜色
edgecolor=' ' # 边缘颜色
facecolor =' ' # 填充色
zorder = ' ' # 图层序号
)
numpy.random提供了normal函数用于产生符合正态分布的随机数
n = 100
# 172:期望值(最高) 20:标准差(震荡幅度,越大越猛,越小越平缓) n:数字生成数量
x = np.random.normal(172,20,n)
y = np.random.normal(60,10,n)
1.填充:以某种颜色自动填充两条曲线的闭合区域
mp.fill_between(
x, # x轴的水平坐标
sin_x, # 下边界曲线上点的垂直坐标
cos_x, # 上边界曲线上点的垂直坐标
sin_x < cos_x, # 填充条件,为True时填充
color = ' ' , # 填充颜色
alpha = 0.2 # 透明度
)
import matplotlib.pyplot as mp
import numpy as np
import matplotlib.gridspec as mg
# 基本绘图
a = np.array([1,2,3,4,5,6])
b = np.array([12,54,7,45,78,65])
mp.plot(a,b)
# 绘制水平线
mp.hlines([10,20,30],1,6) # 可以多条线
mp.vlines(2,10,40)
mp.show()
# 线性拆分1000个点
x = np.linspace(-np.pi,np.pi,1000)
# print(x,x.shape)
y = np.sin(x) # 正弦函数
z = np.cos(x)/2 # 余弦函数
# 设置坐标轴的范围
# mp.xlim(0,np.pi)
# mp.ylim(0,1.2)
# 修改x轴的刻度文本
vals = [-np.pi,-np.pi / 2,0,np.pi / 2,np.pi]
texts = [r'$-\pi$',r'$-\frac{\pi}{2}$','0', r'$\frac{\pi}{2}$',r'$\pi$']
mp.xticks(vals,texts)
# 设置坐标轴
ax = mp.gca()
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['left'].set_position(('data',0))
ax.spines['bottom'].set_position(('data',0))
mp.yticks([-1.0,-0.5,0.5,1.0])
mp.plot(x,y,linestyle='--',linewidth=2,color='blue',alpha=0.8,label=r'$y=sin(x)$')
mp.plot(x,z,linestyle='-.',linewidth=2,color='yellow',alpha=0.5,label=r'$y=\frac{1}{2}cos(x)$')
# 绘制特殊点
pointx = [np.pi/2,np.pi/2]
pointy = [1,0]
mp.scatter(pointx,pointy,marker='o',s=70,color='red',label='sample points',zorder=3)
# 添加备注点
mp.annotate(r'$[frac{\pi}{2},1]$',xycoords='data',xy=(np.pi/2,1),textcoords='offset points',xytext=(50,30),fontsize=14,arrowprops=dict(arrowstyle='->',connectionstyle='arc'))
# 添加图例
mp.legend() # 上面得有传入label值
# 展示
mp.show()
# 测试mp的窗口
mp.figure('A figure',facecolor='gray')
mp.plot([0,1],[1,2]) # 作用于a
mp.figure('B figure',facecolor='lightgray')
mp.plot([1,2],[2,1])
# 如果标题已经创建就不会新建窗口,而是将就窗口置为当前窗口
mp.figure('A figure',facecolor='gray') # 再次绘制a窗口
mp.plot([1,2],[2,1])
# 设置窗口的参数
mp.title('A figure',fontsize = 18)
mp.xlabel('time',fontsize=14)
mp.ylabel('price',fontsize=14)
mp.tick_params(labelsize=10 )
mp.grid(linestyle=':')
mp.tight_layout() # 界面中出现异常情况
mp.show()
# 矩阵式布局
mp.figure('Subplot',facecolor='lightgray')
for i in range(1,10): # 遍历
mp.subplot(3,3,i)
mp.text(0.5,0.5,i,ha='center',va='center',size=36,alpha=0.6)
mp.xticks([]) # 去掉x轴的数字
mp.yticks([])
mp.tight_layout() # 紧凑布局
mp.show()
import matplotlib.gridspec as mg
# 网格式布局
# 1:[0,:2] 2:[:2,2] 3:[1,1]
# 4:[1:,0] 5:[-1,1:]
mp.figure('Grid',facecolor='lightgray')
gs = mg.GridSpec(3,3)
mp.subplot(gs[0,:2]) # 0行前两列
mp.text(0.5,0.5,'1',size=36,alpha=0.6,
ha='center',va='center')
mp.xticks([]) # 去掉x轴的数字
mp.yticks([])
mp.tight_layout()
mp.subplot(gs[:2,2]) # 0行前两列
mp.text(0.5,0.5,'2',size=36,alpha=0.6,
ha='center',va='center')
mp.xticks([]) # 去掉x轴的数字
mp.yticks([])
mp.tight_layout()
mp.subplot(gs[1,1]) # 0行前两列
mp.text(0.5,0.5,'3',size=36,alpha=0.6,
ha='center',va='center')
mp.xticks([]) # 去掉x轴的数字
mp.yticks([])
mp.tight_layout()
mp.subplot(gs[1:,0]) # 0行前两列
mp.text(0.5,0.5,'4',size=36,alpha=0.6,
ha='center',va='center')
mp.xticks([]) # 去掉x轴的数字
mp.yticks([])
mp.tight_layout()
mp.subplot(gs[-1,1:]) # 0行前两列
mp.text(0.5,0.5,'5',size=36,alpha=0.6,
ha='center',va='center')
mp.xticks([]) # 去掉x轴的数字
mp.yticks([])
mp.tight_layout()
mp.show()
locators = ['mp.NullLocator()',
'mp.MaxNLocator(nbins=4)',
'mp.FixedLocator([3,6,9])',
'mp.AutoLocator()']
# 刻度定位器
mp.figure("locators",facecolor='lightgray')
for i,locator in enumerate(locators):
mp.subplot(len(locators),1,i+1)
# 整理坐标轴
mp.xlim(1,10)
# 获取当前坐标轴
ax = mp.gca()
# 隐藏除底轴以外的所有坐标轴
ax.spines['top'].set_color('none')
ax.spines['left'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position(('data',0.5))
mp.yticks([]) # 去除轴
loc = eval(locator)
ax.xaxis.set_major_locator(loc)
ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1))
mp.show()
# 绘制曲线[1,10,100,1000,100,10,1],设置刻度网格线,测试刻度网格线的参数
mp.figure("Grid",facecolor='lightgray')
ax = mp.gca()
# 修改刻度定位器
ax.xaxis.set_major_locator(mp.MultipleLocator(1))
ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1))
ax.yaxis.set_major_locator(mp.MultipleLocator(250))
ax.yaxis.set_minor_locator(mp.MultipleLocator(50))
ax.grid(which='major',axis='both',color='orangered',linewidth=0.75)
ax.grid(which='minor',axis='both',color='orangered',linewidth=0.25)
# 绘制曲线
y = [1,10,100,1000,100,10,1]
# mp.plot(y,'o-',color='dodgerblue')
# 半对数坐标
mp.semilogx(y,'o-',color='dodgerblue')
mp.show()
# 随机生成一组数据
n = 300
height = np.random.normal(175,5,n)
weight = np.random.normal(70,7,n)
mp.figure("Persons",facecolor='lightgray')
mp.title('Persons',fontsize=18)
mp.xlabel('height',fontsize=14)
mp.ylabel('weight',fontsize=14)
mp.grid(linestyle=':')
# 每个样本设置不同颜色
d = (height - 175) ** 2 +(weight - 70) ** 2
mp.scatter(height,weight,
marker='o',s=70,
label='persons',c=d,cmap='jet')
mp.legend()
mp.show()
import numpy as np
import matplotlib.pyplot as mp
# 填充
x = np.linspace(0,8 * np.pi,1000)
sinx = np.sin(x)
cosx = np.cos(x/2)/2
mp.figure('Fill',facecolor='lightgray')
mp.title('Fill',fontsize=18)
mp.grid(linestyle=':')
mp.plot(x,sinx,color='dodgerblue',
label=r'$y=sin(x)$')
mp.plot(x,cosx,color='orangered',
label=r'$y=\frac{1}{2}cos(\frac{x}{2})$')
mp.fill_between(x,sinx,cosx,sinx>cosx,
color='dodgerblue',alpha=0.3)
mp.fill_between(x,sinx,cosx,sinx<cosx,
color='orangered',alpha=0.3)
mp.legend()
mp.show()
工作和学习两头抓,希望在入学前能够先扫盲结束,跟上大部队的脚步,也希望能够让张老师收入门下。加油!!!