《从青铜学到王者》Python数据分析工程师之Matplotlib绘图 02

《从青铜学到王者》Python数据分析工程师之Matplotlib绘图 02每天妹子看一遍 激励自己努力学不厌 matplotlib 概述 matplotlib 是 python 的一个绘图库 使用它可以很方便的绘制出版质量级别的图形 matplotlib 基本功能 基本绘图 在二维平面坐标系中绘制连续的线 设置线型 线宽和颜色 设置坐标轴范围 设置坐标刻度 设置坐标轴 图例 特殊点 备注

大家好,我是讯享网,很高兴认识大家。

每天妹子看一遍,激励自己努力学不厌

请添加图片描述
讯享网

matplotlib概述

matplotlib是python的一个绘图库。使用它可以很方便的绘制出版质量级别的图形。

matplotlib基本功能

  1. 基本绘图 (在二维平面坐标系中绘制连续的线)
    1. 设置线型、线宽和颜色
    2. 设置坐标轴范围
    3. 设置坐标刻度
    4. 设置坐标轴
    5. 图例
    6. 特殊点
    7. 备注
  2. 图形对象(图形窗口)
    1. 子图
    2. 刻度定位器
    3. 刻度网格线
    4. 半对数坐标
    5. 散点图
    6. 填充
    7. 条形图
    8. 饼图
    9. 等高线图
    10. 热成像图
    11. 三维曲面
    12. 简单动画

matplotlib基本功能详解

基本绘图

绘图核心API
import numpy as np import matplotlib.pyplot as mp # xarray: <序列> 水平坐标序列 # yarray: <序列> 垂直坐标序列 mp.plot(xarray, yarray) #显示图表 mp.show() 

讯享网

x和y需要一一对应

讯享网import numpy as np import matplotlib.pyplot as plt x = np.array([1,2,3,4,5]) y = np.array([12,53,23,34,11]) plt.plot(x,y) plt.show() 

在这里插入图片描述

import numpy as np import matplotlib.pyplot as plt x = np.linspace(-np.pi,np.pi,50) y = np.sin(x) plt.plot(x,y) plt.show() 

在这里插入图片描述
在这里插入图片描述

绘制水平线与垂直线:

讯享网import numpy as np import matplotlib.pyplot as mp # vertical 绘制垂直线 mp.vlines(vval, ymin, ymax, ...) # horizotal 绘制水平线 mp.hlines(xval, xmin, xmax, ...) #显示图表 mp.show() 
x = np.array([1,2,3,4,5]) y = np.array([12,53,23,34,11]) plt.hlines(20,2,4) plt.vlines([2,3,4,5],20,40) plt.plot(x,y) plt.show() 

在这里插入图片描述
也可以对应点的组合划线
在这里插入图片描述
在这里插入图片描述

线型、线宽和颜色

案例:绘制一条正弦曲线

讯享网#linestyle: 线型 '-' '--' '-.' ':' #linewidth: 线宽 # 数字 #color: <关键字参数> 颜色 # 英文颜色单词 或 常见颜色英文单词首字母 或 # 或 (1,1,1) 或 (1,1,1,1) #alpha: <关键字参数> 透明度 # 浮点数值 mp.plot(xarray, yarray, linestyle='', linewidth=1, color='', alpha=0.5) 
设置坐标轴范围 ,设置xy轴的可视范围

案例:把坐标轴范围设置为 -π ~ π

#x_limt_min: <float> x轴范围最小值 #x_limit_max: <float> x轴范围最大值 mp.xlim(x_limt_min, x_limit_max) #y_limt_min: <float> y轴范围最小值 #y_limit_max: <float> y轴范围最大值 mp.ylim(y_limt_min, y_limit_max) 
讯享网x = np.linspace(-np.pi,np.pi,50) plt.xlim(0,np.pi) plt.ylim(0,1) plt.plot(x,np.cos(x),linestyle='-.',color='r',alpha=0.8) 

在这里插入图片描述

设置坐标刻度

案例:把横坐标的刻度显示为:0, π/2, π, 3π/2, 2π

#x_val_list: x轴刻度值序列 #x_text_list: x轴刻度标签文本序列 [可选] mp.xticks(x_val_list , x_text_list ) #y_val_list: y轴刻度值序列 #y_text_list: y轴刻度标签文本序列 [可选] mp.yticks(y_val_list , y_text_list ) 

刻度的值序列和文本序列意义对应

讯享网x = np.linspace(-np.pi,np.pi,50) vals = [-np.pi,-np.pi/2,0,np.pi/2,np.pi] texts = [r'$-\pi$',r'$-\pi/2$','0',r'$\pi/2$',r'$\pi$'] plt.xticks(vals,texts) plt.plot(x,np.sin(x),linestyle='-',color='r',alpha=0.8) plt.show() 

在这里插入图片描述

刻度文本的特殊语法LaTex排版语法字符串

r'$x^n+y^n=z^n$', r'$\int\frac{1}{x} dx = \ln |x| + C$', r'$-\frac{\pi}{2}$' 

x 2 + y 2 = z 2 , ∫ 1 x d x = ln ⁡ ∣ x ∣ + C , − π 2 x^2+y^2=z^2, \int\frac{1}{x} dx = \ln |x| + C, -\frac{\pi}{2} x2+y2=z2,x1dx=lnx+C,2π

附上Latex字符大全
在这里插入图片描述
在这里插入图片描述

设置坐标轴

坐标轴名:left / right / bottom / top

讯享网# 获取当前坐标轴字典,{'left':左轴,'right':右轴,'bottom':下轴,'top':上轴 } ax = mp.gca() # getCurrentaxis # 获取其中某个坐标轴 axis = ax.spines['坐标轴名'] # 设置坐标轴的位置。 该方法需要传入2个元素的元组作为参数 # type: <str> 移动坐标轴的参照类型 一般为'data' (以数据的值作为移动参照值) # val: 参照值 axis.set_position(('data', val)) # 设置坐标轴的颜色 # color: <str> 颜色值字符串 axis.set_color(color) 

先获取坐标轴 ax = plt.gca()
在这里插入图片描述

案例:设置坐标轴至中心。

#设置坐标轴 ax = mp.gca() axis_b = ax.spines['bottom'] axis_b.set_position(('data', 0)) axis_l = ax.spines['left'] axis_l.set_position(('data', 0)) ax.spines['top'].set_color('none') ax.spines['right'].set_color('none') 
讯享网ax = plt.gca() ax.spines['top'].set_color('none') #取消上线 ax.spines['right'].set_color('none') ax.spines['left'].set_position(('data',0)) #移到 0点位置 ax.spines['bottom'].set_position(('data',0)) plt.yticks([-1,-0.5,0,0.5,1]) vales = [-np.pi,-np.pi/2,0,np.pi/2,np.pi] texts = texts = [r'$-\pi$',r'$-\pi/2$','0',r'$\pi/2$',r'$\pi$'] plt.xticks(vales,texts) plt.plot(x,np.sin(x),linestyle='--',linewidth=2,alpha=0.7,color='r') plt.show() 

在这里插入图片描述

图例
# 再绘制曲线时定义曲线的label # label: <关键字参数 str> 支持LaTex排版语法字符串 mp.plot(xarray, yarray ... label='', ...) # 设置图例的位置 # loc: <关键字参数> 制定图例的显示位置 (若不设置loc,则显示默认位置) # =============== ============= # Location String Location Code # =============== ============= # 'best' 0 # 'upper right' 1 # 'upper left' 2 # 'lower left' 3 # 'lower right' 4 # 'right' 5 # 'center left' 6 # 'center right' 7 # 'lower center' 8 # 'upper center' 9 # 'center' 10 # =============== ============= mp.legend(loc='') 
讯享网ax = plt.gca() ax.spines['top'].set_color('none') #取消上线 ax.spines['right'].set_color('none') #取消下线 ax.spines['left'].set_position(('data',0)) #移到 0点位置 ax.spines['bottom'].set_position(('data',0)) plt.yticks([-1,-0.5,0,0.5,1]) vales = [-np.pi,-np.pi/2,0,np.pi/2,np.pi] texts = texts = [r'$-\pi$',r'$-\pi/2$','0',r'$\pi/2$',r'$\pi$'] plt.xticks(vales,texts) plt.plot(x,np.sin(x),linestyle='--',linewidth=2,alpha=0.7,color='r',label=r'$y=sin(x)$') plt.plot(x,np.cos(x),linestyle='-',linewidth=2,alpha=0.8,color= 'g',label=r'$y=cos(x)$') plt.legend(loc = 'best') plt.show() 

在这里插入图片描述

特殊点

案例:绘制当x=3π/4时两条曲线上的特殊点。

# xarray: <序列> 所有需要标注点的水平坐标组成的序列 # yarray: <序列> 所有需要标注点的垂直坐标组成的序列 mp.scatter(xarray, yarray, marker='', #点型 ~ matplotlib.markers s=70, #大小 edgecolor='', #边缘色 facecolor='', #填充色 zorder=3 #绘制图层编号 (编号越大,图层越靠上) ) 

特殊点就是在原图的基础上绘制散点,并且用点形表示出来。

讯享网#绘制特殊点 ax = plt.gca() ax.spines['top'].set_color('none') #取消上线 ax.spines['right'].set_color('none') #取消下线 ax.spines['left'].set_position(('data',0)) #移到 0点位置 ax.spines['bottom'].set_position(('data',0)) plt.yticks([-1,-0.5,0,0.5,1]) vales = [-np.pi,-np.pi/2,0,np.pi/2,np.pi] texts = texts = [r'$-\pi$',r'$-\pi/2$','0',r'$\pi/2$',r'$\pi$'] plt.xticks(vales,texts) plt.plot(x,np.sin(x),linestyle='--',linewidth=2,alpha=0.7,color='r',label=r'$y=sin(x)$') plt.plot(x,np.cos(x),linestyle='-',linewidth=2,alpha=0.8,color= 'g',label=r'$y=cos(x)$') pointx = [np.pi / 2, np.pi / 2] pointy = [1,0] plt.scatter(pointx, pointy ,marker= 'o', s=70, color= 'red' ,label= 'smaple points',zorder=3) plt.legend(loc = 'best') plt.show() 

特殊地绘制

marker点型可参照:help(matplotlib.markers)

*也可参照附录: matplotlib point样式*

备注

案例:为在某条曲线上的点添加备注,指明函数方程与值。
在这里插入图片描述
需要多个参数,文本备注参数,位置参数等

# 在图表中为某个点添加备注。包含备注文本,备注箭头等图像的设置。 mp.annotate( r'$\frac{\pi}{2}$', #备注中显示的文本内容 xycoords='data', #备注目标点所使用的坐标系(data表示数据坐标系),以数据坐标系作为参考定位到xy xy=(x, y), #备注目标点的坐标 textcoords='offset points', #备注文本所使用的坐标系(offset points表示参照点的偏移坐标系),以目标点作为远点,建立的便宜坐标系 xytext=(x, y), #备注文本的坐标 fontsize=14, #备注文本的字体大小 arrowprops=dict() #使用字典定义文本指向目标点的箭头样式 ) 
讯享网ax = plt.gca() ax.spines['top'].set_color('none') #取消上线 ax.spines['right'].set_color('none') #取消下线 ax.spines['left'].set_position(('data',0)) #移到 0点位置 ax.spines['bottom'].set_position(('data',0)) plt.yticks([-1,-0.5,0,0.5,1]) vales = [-np.pi,-np.pi/2,0,np.pi/2,np.pi] texts = texts = [r'$-\pi$',r'$-\pi/2$','0',r'$\pi/2$',r'$\pi$'] plt.xticks(vales,texts) plt.plot(x,np.sin(x),linestyle='--',linewidth=2,alpha=0.7,color='r',label=r'$y=sin(x)$') plt.plot(x,np.cos(x),linestyle='-',linewidth=2,alpha=0.8,color= 'g',label=r'$y=cos(x)$') pointx = [np.pi / 2, np.pi / 2] pointy = [1,0] plt.scatter(pointx, pointy ,marker= 'o', s=70, color= 'red' ,label= 'smaple points',zorder=3) plt.annotate( r'$[\frac{\pi}{2},1]$',#备注中显示的文本内容 xycoords='data',#备注目标点所使用的坐标系(data表示数据坐标系),以数据坐标系作为参考定位到xy xy=(np.pi / 2, 1),#备注目标点的坐标 textcoords='offset points',#备注文本所使用的坐标系(offset points表示参照点的偏移坐标系),以目标点作为远点,建立的便宜坐标系 xytext=(50, 40),#备注文本的坐标 fontsize=14,#备注文本的字体大小 arrowprops=dict( arrowstyle='->', connectionstyle='angle3')#使用字典定义文本指向目标点的箭头样式 ) plt.legend(loc = 'best') plt.show() 

在这里插入图片描述

arrowprops参数使用字典定义指向目标点的箭头样式

#arrowprops字典参数的常用key arrowprops=dict( arrowstyle='', #定义箭头样式 connectionstyle='' #定义 连接线的样式 ) 

箭头样式(arrowstyle)字符串如下

讯享网============================================= Name Attrs ============================================= '-' None '->' 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 ============================================= 

连接线样式(connectionstyle)字符串如下

============================================= Name Attrs ============================================= 'angle' angleA=90,angleB=0,rad=0.0 'angle3' angleA=90,angleB=0` 'arc' angleA=0,angleB=0,armA=None,armB=None,rad=0.0 'arc3' rad=0.0 'bar' armA=0.0,armB=0.0,fraction=0.3,angle=None ============================================= 

图形对象(图形窗口)

案例:绘制两个窗口,一起显示。

讯享网# 手动构建 matplotlib 窗口 mp.figure( '', #窗口标题栏文本  figsize=(4, 3), #窗口大小 <元组> dpi=120, #像素密度 facecolor='' #图表背景色 ) mp.show() 

mp.figure方法不仅可以构建一个新窗口,如果已经构建过title='AAA’的窗口,又使用figure方法构建了title=‘AAA’ 的窗口的话,mp将不会创建新的窗口,而是把title='AAA’的窗口置为当前操作窗口。

设置当前窗口的参数

# 设置图表标题 显示在图表上方 mp.title(title, fontsize=12) # 设置水平轴的文本 mp.xlabel(x_label_str, fontsize=12) # 设置垂直轴的文本 mp.ylabel(y_label_str, fontsize=12) # 设置刻度参数 labelsize设置刻度字体大小 mp.tick_params(..., labelsize=8, ...) # 设置图表网格线 linestyle设置网格线的样式 # - or solid 粗线 # -- or dashed 虚线 # -. or dashdot 点虚线 # : or dotted 点线 mp.grid(linestyle='') # 设置紧凑布局,把图表相关参数都显示在窗口中 mp.tight_layout() 
讯享网 plt.yticks([-1,-0.5,0,0.5,1]) vales = [-np.pi,-np.pi/2,0,np.pi/2,np.pi] texts = texts = [r'$-\pi$',r'$-\pi/2$','0',r'$\pi/2$',r'$\pi$'] plt.xticks(vales,texts) plt.plot(x,np.sin(x),linestyle='--',linewidth=2,alpha=0.7,color='r',label=r'$y=sin(x)$') plt.plot(x,np.cos(x),linestyle='-',linewidth=2,alpha=0.8,color= 'g',label=r'$y=cos(x)$') pointx = [np.pi / 2, np.pi / 2] pointy = [1,0] plt.scatter(pointx, pointy ,marker= 'o', s=70, color= 'red' ,label= 'smaple points',zorder=3) plt.annotate( r'$[\frac{\pi}{2},1]$',#备注中显示的文本内容 xycoords='data',#备注目标点所使用的坐标系(data表示数据坐标系),以数据坐标系作为参考定位到xy xy=(np.pi / 2, 1),#备注目标点的坐标 textcoords='offset points',#备注文本所使用的坐标系(offset points表示参照点的偏移坐标系),以目标点作为远点,建立的便宜坐标系 xytext=(50, 40),#备注文本的坐标 fontsize=14,#备注文本的字体大小 arrowprops=dict( arrowstyle='->', connectionstyle='angle3')#使用字典定义文本指向目标点的箭头样式 ) plt.title('sin/cos',fontsize=12) plt.xlabel('X',fontsize=14) plt.ylabel('Y',fontsize=12) plt.grid(linestyle=':') plt.tick_params(labelsize=10) plt.legend(loc = 'best') plt.show() 

在这里插入图片描述

子图

矩阵式布局

mp.figure('Subplot Layout', facecolor='lightgray') # 拆分矩阵 # rows: 行数 # cols: 列数 # num: 编号 mp.subplot(rows, cols, num) # 1 2 3 # 4 5 6 # 7 8 9  mp.subplot(3, 3, 5) #操作3*3的矩阵中编号为5的子图 mp.subplot(335) #简写 

想要操作哪一个就调用哪一个子图进行操作

案例:绘制9宫格矩阵式子图,每个子图中写一个数字。

讯享网mp.figure('Subplot Layout', facecolor='lightgray') for i in range(9): mp.subplot(3, 3, i+1) mp.text( 0.5, 0.5, i+1, #0.5,0.5是文本的位置 ,后面的是文本内容 ha='center', #垂直居中 va='center', #水平居中 size=36, alpha=0.5, withdash=False ) mp.xticks([]) #取消x轴的刻度 mp.yticks([]) #取消y轴的刻度 mp.tight_layout() #紧凑布局 mp.show() 

在这里插入图片描述

网格式布局

网格式布局支持单元格的合并。
在这里插入图片描述

import matplotlib.gridspec as mg mp.figure('Grid Layout', facecolor='lightgray') # 调用GridSpec方法拆分网格式布局 # rows: 行数 # cols: 列数 # gs = mg.GridSpec(rows, cols) 拆分成3行3列 gs = mg.GridSpec(3, 3) # 合并0行与0、1列为一个子图表 mp.subplot(gs[0, :2]) mp.text(0.5, 0.5, '1', ha='center', va='center', size=36) mp.show() 

案例:绘制一个自定义网格布局。

讯享网import matplotlib.gridspec as mg mp.figure('GridLayout', facecolor='lightgray') gridsubs = mp.GridSpec(3, 3) # 合并0行、0/1列为一个子图 mp.subplot(gridsubs[0, :2]) mp.text(0.5, 0.5, 'Hello world', ha='center', va='center', size=36) mp.tight_layout() mp.xticks([]) mp.yticks([]) mp.show() 

在这里插入图片描述
在这里插入图片描述

自由式布局

自由式布局相关API:

mp.figure('Flow Layout', facecolor='lightgray') # 设置图标的位置,给出左下角点坐标与宽高即可 # left_bottom_x: 坐下角点x坐标 # left_bottom_x: 坐下角点y坐标 # width: 宽度 # height: 高度 # mp.axes([left_bottom_x, left_bottom_y, width, height]) mp.axes([0.03, 0.03, 0.94, 0.94]) mp.text(0.5, 0.5, '1', ha='center', va='center', size=36) mp.show() 

案例:测试自由式布局,定位子图。

讯享网mp.figure('FlowLayout', facecolor='lightgray') mp.axes([0.1, 0.2, 0.5, 0.3]) mp.text(0.5, 0.5, 1, ha='center', va='center', size=36) mp.show() 
刻度定位器

刻度定位器相关API:

# 获取当前坐标轴 ax = mp.gca() # 设置水平坐标轴的主刻度定位器 ax.xaxis.set_major_locator(mp.NullLocator()) # 设置水平坐标轴的次刻度定位器为多点定位器,间隔0.1 ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1)) 

案例:绘制一个数轴。

讯享网mp.figure('Locators', facecolor='lightgray') # 获取当前坐标轴 ax = mp.gca() # 隐藏除底轴以外的所有坐标轴 ax.spines['left'].set_color('none') ax.spines['top'].set_color('none') ax.spines['right'].set_color('none') # 将底坐标轴调整到子图中心位置 ax.spines['bottom'].set_position(('data', 0)) # 设置水平坐标轴的主刻度定位器 ax.xaxis.set_major_locator(mp.NullLocator()) # 设置水平坐标轴的次刻度定位器为多点定位器,间隔0.1 ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1)) # 标记所用刻度定位器类名  mp.text(5, 0.3, 'NullLocator()', ha='center', size=12) 

在这里插入图片描述

案例:使用for循环测试刻度器样式:

locators = ['mp.NullLocator()', 'mp.MaxNLocator(nbins=4)'] for i, locator in enumerate(locators): mp.subplot(len(locators), 1, i+1) mp.xlim(0, 10) mp.ylim(-1, 1) mp.yticks([]) # 获取当前坐标轴 ax = mp.gca() # 隐藏除底轴以外的所有坐标轴 ax.spines['left'].set_color('none') ax.spines['top'].set_color('none') ax.spines['right'].set_color('none') # 将底坐标轴调整到子图中心位置 ax.spines['bottom'].set_position(('data', 0)) # 设置水平坐标轴的主刻度定位器 ax.xaxis.set_major_locator(eval( )) # 设置水平坐标轴的次刻度定位器为多点定位器,间隔0.1 ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1)) mp.plot(np.arange(11), np.zeros(11), c='none') # 标记所用刻度定位器类名 mp.text(5, 0.3, locator, ha='center', size=12) 

常用刻度器如下

讯享网# 空定位器:不绘制刻度 mp.NullLocator() # 最大值定位器: # 最多绘制nbins+1个刻度 mp.MaxNLocator(nbins=3) # 定点定位器:根据locs参数中的位置绘制刻度 mp.FixedLocator(locs=[0, 2.5, 5, 7.5, 10]) # 自动定位器:由系统自动选择刻度的绘制位置 mp.AutoLocator() # 索引定位器:由offset确定起始刻度,由base确定相邻刻度的间隔 mp.IndexLocator(offset=0.5, base=1.5) # 多点定位器:从0开始,按照参数指定的间隔(缺省1)绘制刻度 mp.MultipleLocator() # 线性定位器:等分numticks-1份,绘制numticks个刻度 mp.LinearLocator(numticks=21) # 对数定位器:以base为底,绘制刻度 mp.LogLocator(base=2) 
刻度网格线
ax = mp.gca() #绘制刻度网格线 ax.grid( which='', # 'major'/'minor' <-> '主刻度'/'次刻度'  axis='', # 'x'/'y'/'both' <-> 绘制x或y轴 linewidth=1, # 线宽 linestyle='', # 线型 color='', # 颜色 alpha=0.5 # 透明度 ) 
讯享网y = np.array([1, 10, 100, 1000, 100, 10, 1]) mp.figure('Normal & Log', facecolor='lightgray') mp.subplot(211) mp.title('Normal', fontsize=20) mp.ylabel('y', fontsize=14) ax = mp.gca() ax.xaxis.set_major_locator(mp.MultipleLocator(1.0)) 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)) mp.tick_params(labelsize=10) #设置刻度不同宽度 #主次的网格线设置不同的线粗 ax.grid(which='major', axis='both', linewidth=0.75, linestyle='-', color='orange') ax.grid(which='minor', axis='both', linewidth=0.25, linestyle='-', color='orange') mp.plot(y, 'o-', c='dodgerblue', label='plot') #'o-'是连点成线 mp.legend() 

在这里插入图片描述

半对数坐标
mp.figure('Grid', facecolor='lightgray') y = [1, 10, 100, 1000, 100, 10, 1] mp.semilogy(y) mp.show() 

在这里插入图片描述

散点图

可以通过每个点的坐标、颜色、大小和形状表示不同的特征值。提前查看样本的特征分布的时候,宏观状态下观察数据的走势。判断是否符合线性预测

身高 体重 性别 年龄段 种族
180 80 中年 亚洲
160 50 青少 美洲

绘制散点图的相关API:

讯享网mp.scatter( x, # x轴坐标数组 y, # y轴坐标数组 marker='', # 点型 s=10, # 大小 color='', # 颜色 edgecolor='', # 边缘颜色 facecolor='', # 填充色 zorder='' # 图层序号 ) 

numpy.random提供了normal函数用于产生符合 正态分布 的随机数

n = 100 # 172: 期望值 # 10: 标准差 # n: 数字生成数量 x = np.random.normal(172, 20, n) y = np.random.normal(60, 10, n) 

案例:绘制平面散点图。

讯享网mp.figure('scatter', facecolor='lightgray') mp.title('scatter') mp.scatter(x, y) mp.show() 
#案例2 n = 300 h = np.random.normal(175,5,n) w = np.random.normal(70,7,n) mp.figure('Person',facecolor = 'lightgray') mp.title('Person') mp.xlabel('height',fontsize=12) mp.ylabel('weight',fontsize=12) mp.grid(linestyle=':') mp.scatter(h,w,marker='o',s=70,label='person',color='blue') mp.legend() mp.show() 

在这里插入图片描述

设置点的颜色

讯享网mp.scatter(x, y, c='red') #直接设置颜色 d = (x-172)2 + (y-60)2 mp.scatter(x, y, c=d, cmap='jet') #以c作为参数,取cmap颜色映射表中的颜色值 

设置距离均值越近的变成蓝色,距离越远的是另一种颜色,d是一个数组,表示距离均值点的距离,用欧氏距离来表示。cmap中的jet表示一个映射,值越大,颜色就越不蓝色
cmap颜色映射表参照附件:cmap颜色映射表

n = 100 # 172: 期望值 # 10: 标准差 # n: 数字生成数量 x = np.random.normal(172, 20, n) y = np.random.normal(60, 10, n) mp.figure('scatter', facecolor='lightgray') mp.title('scatter') mp.scatter(x, y, c='red') d = (x-172)2 + (y-60)2 mp.scatter(x, y, c=d, cmap='jet') mp.show() 

在这里插入图片描述
cmap的颜色映射
在这里插入图片描述

小讯
上一篇 2025-01-24 12:11
下一篇 2025-02-05 23:54

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/44067.html