Python矩阵作图库matplotlib的初级使用(2)
基础介绍
matplotlib图形对象层级结构:
图形对象(figure) → 子图对象(axes) → 坐标轴对象(axis) → 定位器对象-刻度线(locator)/格式化器对象-刻度线标签(formatter)绘图对象创建
from matplotlib import pyplot as plt # 创建绘图对象
fig = plt.figure() # 创建网格子图
ax1 = fig.add_subplot(rows, cols, idx)
# 创建手动子图
ax1 = fig.add_axes([left, bottom, width, height]) # 获取坐标轴对象
ax1.xaxis
ax1.yaxis # 设置定位器对象
ax1.xaxis.set_major_locator(plt.NullLocator)
ax1.xaxis.set_minor_locator(plt.NullLocator)
# 设置格式化器对象
ax1.xaxis.set_major_formatter(plt.NullFormatter)
ax1.xaxis.set_minor_formatter(plt.NullFormatter)
部分细节控制
颜色支持
①. 标准颜色名称, 如: "red"
②. 范围在0~1的灰度值, 如: "0.75"
③. RGB十六进制, 如: "#FFDD44"
④. RGB元组, 范围在0~1, 如: (1.0, 0.2, 0.3)配色方案支持
①. 获取配色方案: plt.cm
②. 常见配色方案: "jet", "viridis", "RdBu"
③. 离散化配色方案: plt.cm.get_cmap("Blues", 6)颜色条控制支持
plt.colorbar(mappable, ticks=range(6), label="digit value", extend="both")
注意, colorbar本身也是一个子图对象, 创建时依赖于mappable对象linestyle线条风格支持
①. "solid"; ②. "dashed"; ③. "dashdot"; ④. "dotted"散点控制支持
①. markersize; ②. markerfacecolor; ③. markeredgecolor; ④. markeredgewidth
注意, 绘制散点时, plt.plot较plt.scatter性能更好, plt.scatter较plt.plot更加灵活标签支持
①. title; ②. xlabel; ③. ylabel; ④. label; ⑤. legend图例控制支持
ax1.legend([labels,] loc="upper left", frameon=False, ncol=2, fontsize=10, title="Area")文本注释支持
ax1.text(x, y, text, size, color, ha, va, transform=ax1.transData|ax1.transAxes|fig.transFigure)坐标轴控制支持
ax1.set(xlabel, xlim, xticks, xscale)
部分绘图实例
误差绘制
code
import numpy
from matplotlib import pyplot as plt X = numpy.linspace(-1, 1, 30)
Y = X ** 3 + X ** 2 + X
YErr = numpy.random.uniform(0.3, 0.7, Y.shape) fig = plt.figure(figsize=(4, 4))
ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2) ax1.errorbar(X, Y, YErr, fmt="o", color="black", ecolor="lightgray", elinewidth=3, capsize=0)
ax2.plot(X, Y, "-", color="gray")
ax2.fill_between(X, Y-YErr, Y+YErr, color="gray", alpha=0.2) fig.savefig("plot.png", dpi=300)

等高线绘制
code
import numpy
from matplotlib import pyplot as plt X = numpy.linspace(-1, 1, 30)
Y = numpy.linspace(-2, 2, 50)
X, Y = numpy.meshgrid(X, Y)
Z = numpy.sin(X) + numpy.cos(Y ** 2) fig = plt.figure(figsize=(10, 3))
ax1 = fig.add_axes([0.1, 0.1, 0.3, 0.9])
ax2 = fig.add_axes([0.5, 0.1, 0.3, 0.9]) ax1.contourf(X, Y, Z, 20, cmap="RdGy")
ax2.imshow(Z, extent=[-1, 1, -2, 2], origin="lower", cmap="RdGy", aspect="auto") fig.savefig("plot.png", dpi=300)

3维曲面绘制
code
import numpy
from matplotlib import pyplot as plt
from mpl_toolkits import mplot3d X = numpy.linspace(-1, 1, 30)
Y = numpy.linspace(-2, 2, 50)
X, Y = numpy.meshgrid(X, Y)
Z = numpy.sin(X) + numpy.cos(Y ** 2) fig = plt.figure(figsize=(10, 3))
ax1 = fig.add_subplot(1, 2, 1, projection="3d")
ax2 = fig.add_subplot(1, 2, 2, projection="3d") ax1.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap="viridis", edgecolor="none")
ax2.plot_trisurf(X.flatten(), Y.flatten(), Z.flatten(), cmap="viridis", edgecolor="none") fig.tight_layout()
fig.savefig("plot.png", dpi=300)

直方图与密度图
code
import numpy
import seaborn as sns
from matplotlib import pyplot as plt X = numpy.random.normal(0, 1, (10000,)) fig = plt.figure(figsize=(10, 3))
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2) sns.histplot(X, kde=False, ax=ax1)
sns.kdeplot(data=X, ax=ax2) fig.savefig("plot.png", dpi=300)

多维矩阵图
code
import numpy
import pandas
import seaborn as sns X1 = numpy.random.normal(0, 1, (300,))
X2 = numpy.sin(X1)
X3 = X1 ** 2
data = numpy.vstack((X1, X2, X3)).T
df = pandas.DataFrame(data, columns=["X1", "X2", "X3"]) sns_plot = sns.pairplot(df) sns_plot.savefig("plot.png", dpi=300)

参考文档
①. Python Data Science Handbook by Jake VanderPlas (O’Reilly). Copyright 2017 Jake VanderPlas, 978-1-491-91205-8
Python矩阵作图库matplotlib的初级使用(2)的更多相关文章
- matplotlib python高级绘图库 一周总结
matplotlib python高级绘图库 一周总结 官网 http://matplotlib.org/ 是一个python科学作图库,可以快速的生成很多非常专业的图表. 只要你掌握要领,画图将变得 ...
- Python 绘图库Matplotlib入门教程
0 简单介绍 Matplotlib是一个Python语言的2D绘图库,它支持各种平台,并且功能强大,能够轻易绘制出各种专业的图像. 1 安装 pip install matplotlib 2 入门代码 ...
- 推荐:python科学计算pandas/python画图库matplotlib【转】
机器学习基础3--python科学计算pandas(上) 地址:https://wangyeming.github.io/2018/09/04/marchine-learning-base-panda ...
- Python数据可视化——使用Matplotlib创建散点图
Python数据可视化——使用Matplotlib创建散点图 2017-12-27 作者:淡水化合物 Matplotlib简述: Matplotlib是一个用于创建出高质量图表的桌面绘图包(主要是2D ...
- python实战学习之matplotlib绘图
matplotlib 是最流行的Python底层绘图库,主要做数据可视化图表 可以将数据可视化,能够更直观的呈现数据 matplotlib绘图基本要点 首先实现一个简单的绘图 # 导入pyplot f ...
- 【python笔记】使用matplotlib,pylab进行python绘图
一提到python绘图,matplotlib是不得不提的python最著名的绘图库,它里面包含了类似matlab的一整套绘图的API.因此,作为想要学习python绘图的童鞋们就得在自己的python ...
- python数据分析scipy和matplotlib(三)
Scipy 在numpy基础上增加了众多的数学.科学及工程常用的库函数: 线性代数.常微分方程求解.信号处理.图像处理.稀疏矩阵等: Matplotlib 用于创建出版质量图表的绘图工具库: 目的是为 ...
- Python中Numpy及Matplotlib使用
Python中Numpy及Matplotlib使用 1. Jupyter Notebooks 作为小白,我现在使用的python编辑器是Jupyter Notebook,非常的好用,推荐!!! 你可以 ...
- 在python中使用图形库matplotlib
matplotlib is a python 2D plotting library which produces publication quality figures in a variety o ...
- [置顶] 如何在Windows 7 64位安装Python,并使用Matplotlib绘图
1. 安装Python 我使用的是Windows 7 64 bit,所以我从Python官网下载python-2.7.5.amd64.msi,安装步骤如下: 1) 安装windo ...
随机推荐
- ASP.NET Core - .NET 6 的入口文件
自从.NET 6 开始,微软对应用的入口文件进行了调整,移除了 Main 方法和 Startup 文件,使用顶级语句的写法,将应用初始化的相关配置和操作全部集中在 Program.cs 文件中,如下: ...
- 又花了半个小时将 ChatGPT 接入了钉钉机器人
前面的文章给大家介绍了如何在个人微信中使用 ChatGPT,但是大家都知道这种操作是有风险的,所以都让大家使用小号,今天再给大家介绍一下如何在钉钉中使用机器人来调戏 AI. 流程 注册钉钉开发者平台账 ...
- 学习Java Day6
今天学习了Java的输出,与C/C++不同,Java的输出形式有很多,有许多printf标识符表示的含义各不相同,而且数量众多,其中Java还有表示日期的转换符.
- steamdeck使用SSH远程控制
为了方便去折腾steamdeck,我想用Windows11远程控制steam deck,我开始在网上查找Linux远程控制的方法,决定使用SSH来达到目的. 首先开始查看我的steamdeck的ip地 ...
- 【新品发布】如何将Spire.XLS for C++集成到C++ 程序中
Spire.XLS for C++是一个 Excel 库,供开发人员在任何类型的 C++ 应用程序中操作 Excel 文档(XLS.XLSX.XLSB 和 XLSM). 本文演示了如何以两种不同的方式 ...
- Win10解决文件或文件夹属性选项中只有“常规“、“以前的版本”,没有“安全”、“共享”、“位置”的方法
问题介绍: 当我想要把"桌面"文件夹的路径改到其他盘的时候,通常我只需要对着"桌面"文件夹点击右键,在属性-位置的选项卡中更改路径即可:但是我发现我在对着&qu ...
- 一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
前言 秒杀和高并发是面试的高频考点,也是我们做电商项目必知必会的场景.欢迎大家参与我们的开源项目,提交PR,提高竞争力.早日上岸,升职加薪. 知识点详解 秒杀系统架构图 秒杀流程图 秒杀系统设计 这篇 ...
- 消息传递(news)题解
代码 #include<cstdio> #include<algorithm> using namespace std; const int N = 200000; int f ...
- JZOJ 2645. 【NOIP2011模拟11.1】钓鱼
题面 分析 状压 \(dp\) 直接上啊! 设 \(f_{t,S,pos}\) 表示 \(t\) 这个时刻之前能钓到的最多的鱼的数量 那么当前为可以钓鱼也可以移动 于是一切都明朗了 \(Code\) ...
- LeetCode-1606 找到处理请求最多的服务器
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-servers-that-handled-most-number-of-requests ...