使用 Matplotlib 绘制 2D 和 3D 图形
文章目录
- 1. 绘制2D图像
- 1.1. 与MATLAB相似的用法
- 1.2. 面向对象的方法
- 1.3. 图的属性设置
- 1.4. 其他二维图
- 2. 绘制3D图
- 2.1. 在三维空间中绘制散点
- 2.2. 在三维空间中绘制连续图形
1. 绘制2D图像
注意:如果在NoteBook环境下绘图时应该首先运行%matplotlib inline
1.1. 与MATLAB相似的用法
from matplotlib import pylab
import numpy as np
%matplotlib inlinex = np.linspace(0, 10, 20) #构造数据
y = x * x + 2pylab.subplot(1,2,1) #绘制子图1,并指定以下语句是在此子图上绘制
pylab.plot(y,x,'g*-') #这里的'g*-'是线条的属性设置,和MATLAB一致pylab.subplot(1,2,2) #子图2,以下绘制在子图2中
pylab.plot(y,x,'r--')
1.2. 面向对象的方法
from matplotlib import pyplot as plt
import numpy as np
%matplotlib inlinex = np.linspace(0, 10, 20) #构造数据
y = x * x + 2#------------------------------------方法 1:add_axes方法添加画布--------------------------fig = plt.figure() # 新建图形对象,画板,图像的框架,可以通过 figsize=(14,6)指定画板尺寸#add_axes参数的前两个表示坐标,后两个表示图像长和高,范围[0,1]
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) #创建画布,即子图,此方法创建的子图可以重叠#创建子图2
axes2 = fig.add_axes([0.2, 0.5, 0.4, 0.3])axes1.plot(x, y, 'r')
axes2.plot(y, x, 'g')#------------------------------------方法三:使用 subplots() 添加画布--------------------------
#fig为画板对象,axes为画布对象列表
fig, axes = plt.subplots(nrows=1, ncols=2) # 子图为 1 行,2 列,参数可以直接写为(1,2)
for ax in axes:ax.plot(x, y, 'r')#------------------------------------方法三:使用 add_subplot() 添加画布--------------------------
# '''此方法与MATLAB方法相似'''fig = plt.figure() # 新建图形对象fig.add_subplot(1,2,1)plt.plot(x, y, 'r')
fig.add_subplot(1,2,2)plt.plot(x, y, 'g')
方法一:
方法二:
方法三:
1.3. 图的属性设置
- 图名称、坐标轴名称、图例
#1.设置标题
ax.set_title("title")#2.设置坐标轴名称
ax.set_xlabel("x")
ax.set_ylabel("y")#3. 设置图例,其中loc 参数标记图例位置1,2,3,4
#依次代表:右上角、左上角、左下角,右下角;0 代表自适应
ax.legend(["label1", "label2"],loc=0)
- 画布网格、坐标轴范围
使用画布方法
axes.grid(True) #设置网格,默认为False#设置坐标轴范围
axes.set_ylim([0, 60])
axes.set_xlim([2, 5])
线型、颜色、透明度、虚线交错宽度
- 方法一:
颜色、线型、标记由三种符号组成:如 ‘r–^’ :红色、虚线、朝上三角标记。然后在指定其他参数
ax.plot(x, x+1, 'r--^', lw=1)
- 方法二:
全部由关键字传参
ax.plot(x, x+16, color="purple", lw=1, ls='-', marker='s', markersize=8, markerfacecolor="yellow", markeredgewidth=2, markeredgecolor="blue")
- plot()参数
参数 描述 color 颜色 alpha 透明度 linestyle ,ls 线型 linewidth ,lw 线宽 marker 线标记 markersize,ms 标记大小 markeredgewidth mew 标记边界宽度 markerfacecolor ,mfc 标记内部颜色 markeredgecolor, mec 标记边界颜色 - 线型:
号 描述 -’ 实线 ‘–’ 线型虚线 ‘-.’ 点划线 点线交错 ‘:’ 点型虚线 注意:虚线交错宽度设置
line, = ax.plot(x, x+8, color="black", lw=1.50) line.set_dashes([5, 10, 15, 10]) #偶数个列表,每两个树为一个实线与虚线的交错宽度
- 线标记:
符号 描述 ‘.’ 点标记 ‘,’ 像素标记 ‘o’ 圆圈标记 ‘v’ 朝下的三角形 ‘^’ 朝上的三角形 ‘<’ 朝左的三角形 ‘>’ 朝右的三角形 1-4 tri_down marker,up,left,right ‘s’ 正方形 ‘p’ 五边形 ‘*’ 星型 ‘h’ 1号六角形 ‘H’ 2号六角形 ‘+’ +号标记 ‘x’ x号标记 ‘D’ 钻石形 ‘d’ 小版钻石形 ‘|’ 垂直线形 ‘_’ 水平线行 - 颜色
符号 描述 ‘b’ 蓝色 ‘g’ 绿色 ‘r’ 红色 ‘c’ 青色 ‘m’ 品红 ‘y’ 黄色 ‘k’ 黑色 ‘w’ 白色 其中颜色可以由完整的英文名称、十六进制字符码(’#777777’)、RGB、RGBA元组(((0, 128, 64))),只有符号表示的可以用方法一格式化组合线的属性,其他需用关键字传参。
- 方法一:
1.4. 其他二维图
- 绘制散点图、梯步图、条形图、面积图
"""绘制散点图、梯步图、条形图、面积图
"""
n = np.array([0,1,2,3,4,5])fig, axes = plt.subplots(1, 4, figsize=(16,5))axes[0].scatter(x, x + 0.25*np.random.randn(len(x)))
axes[0].set_title("scatter")axes[1].step(n, n**2, lw=2)
axes[1].set_title("step")axes[2].bar(n, n**2, align="center", width=0.5, alpha=0.5)
axes[2].set_title("bar")# 提供两个函数,绘制交叉面积
axes[3].fill_between(x, x**2, x**3, color="green", alpha=0.5)
axes[3].set_title("fill_between")
2. 绘制直方图和累计直方图
"""绘制直方图
"""
n = np.random.randn(100000)
fig, axes = plt.subplots(1, 2, figsize=(12,4))axes[0].hist(n)
axes[0].set_title("Default histogram")
axes[0].set_xlim((min(n), max(n)))axes[1].hist(n, cumulative=True, bins=50)
axes[1].set_title("Cumulative detailed histogram")
axes[1].set_xlim((min(n), max(n)))
2. 绘制3D图
2.1. 在三维空间中绘制散点
from mpl_toolkits.mplot3d.axes3d import Axes3Dfig = plt.figure(figsize=(14,6))# 通过 projection='3d' 指定绘制 3D 图形
ax = fig.add_subplot(1, 2, 1, projection='3d')
ax.scatter([1,2,3], [1,2,3], [1,2,3],c='r') #分别对应三个坐标xyz,可以为单个数字表示单个坐标,可以为三个列表,表示多个坐标
2.2. 在三维空间中绘制连续图形
注意事项:
- 需要关联XY
np.meshgrid(phi_p, phi_m)的作用是用对应的输入生成二维空间中的点。
from mpl_toolkits.mplot3d.axes3d import Axes3D#数据生成
phi_m = np.linspace(0, 2*np.pi, 100)
phi_p = np.linspace(0, 2*np.pi, 100)
X,Y = np.meshgrid(phi_p, phi_m)
Z = flux_qubit_potential(X, Y).Tfig = plt.figure(figsize=(14,6))# 通过 projection='3d' 指定绘制 3D 图形
ax = fig.add_subplot(1, 2, 1, projection='3d')
ax.plot_surface(X, Y, Z, rstride=4, cstride=4, linewidth=0)
使用 Matplotlib 绘制 2D 和 3D 图形相关推荐
- 如何用python画数学图案_使用Matplotlib 绘制精美的数学图形例子
一个最最简单的例子: 绘制一个从 0 到 360 度完整的 SIN 函数图形 import numpy as np import matplotlib.pyplot as pt x = np.aran ...
- java绘制三维曲线_使用JFreeChart绘制2D和3D折线图 | 学步园
这是一个Web Project 首先是web.xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schem ...
- 使用JFreeChart绘制2D和3D折线图
完整版见https://jadyer.github.io/ 这是一个Web Project 首先是web.xml <?xml version="1.0" encoding=& ...
- 用python画数学函数图像教程_使用Matplotlib 绘制精美的数学图形例子
一个最最简单的例子: 绘制一个从 0 到 360 度完整的 SIN 函数图形 import numpy as np import matplotlib.pyplot as pt x = np.aran ...
- Matlab中绘制度长方体3D图形
Matlab中绘制度长方体3D图形 已知空间中长方体网格的三维坐标(x,y,z)及其对应的值Value,绘制出长方体的各个面, 各个面的颜色根据对应坐标的值设定. 图形效果如下 以下是matlab中的 ...
- eeglab教程系列(8)-数据叠加平均{2}绘制2D和3D图
1.绘制一些列的2D ERP scalp maps 本案例中将绘制一系列的2-D scalp maps,其中每个图表明的是一个特定的潜伏期的电压分布. 具体操作如下: Plot > ERP ma ...
- eeglab中文教程系列(7)-数据叠加平均{2}绘制2D和3D图
目录 1.绘制一些列的2D ERP scalp maps 2.绘制一些列的3D ERP scalp maps 本教程为脑机学习者Rose发表于公众号:脑机接口社区 .QQ交流群:903290195 1 ...
- python求圆锥体的表面积_使用matplotlib绘制圆锥的三维图形
我找到了一个解决办法,也许对其他人有用.在from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm import matplo ...
- qmlcanvas绘制3d图形_透视Matplotlib核心功能和工具包 - 绘制3D图形
关联知识 Matplotlib Python 线图 在此,我们将学习如何创建3D线图. 它类似于2D等效折线图,并且2D折线图的许多属性都结转到3D. 我们将在相同的轴上绘制凹凸曲线,并从不同角度查看 ...
最新文章
- spring boot mysql和mybatis
- ElasticSearch入门 :Windows下安装ElasticSearch
- firefox+android+平板,Firefox OS首款平板现身,“三头并进”追赶Android
- B-Suffix Array
- pythonista_Pythonista20190325伤不起
- 从全职高手开始的系统_全职高手8年登上巅峰荣耀,阅文做对了什么?
- 闲聊libhybris
- 任意文件夹下打开cmd窗口
- 2019年互联网大厂月饼大盘点,最丑的一家竟然是...
- setting配置文件详解
- 全自动过滤器:全自动自清洗过滤器对给排水总结的经验
- 查看计算机80端口,电脑技巧分享:检测和解决80端口被占用的2种方法
- python的label属性_python内置GUI库tkinter——Label类属性
- ih5长图如何滑动_iH5中级教程:微场景H5必备,横向滑动切换
- 力扣每日一题(九——保持城市天际线)
- mysql 某个日期加七天_Mysql时间操作(当天,昨天,7天,30天,半年,全年,季度)...
- 编程及C/C++初学者 FAQ
- LQ0141 纸张尺寸【水题】
- CAPL基础篇-----CAPL与Panel的交互
- 详解人工智能的五大思想流派 元芳你支持哪一派?