『Python』matplotlib坐标轴应用
1. 设置坐标轴的位置和展示形式
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.use('Qt5Agg')
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串
plt.axes([0.05, 0.7, 0.3, 0.3], frameon=True, facecolor="y", aspect="equal")
plt.plot(np.arange(3), [0, 1, 0], color="blue", linewidth=2, linestyle="--")
plt.ylim(0, 1.5)
plt.axis("image")
plt.axes([0.3, 0.4, 0.3, 0.3], frameon=True, facecolor="y", aspect="equal")
plt.plot(2 + np.arange(3), [0, 1, 0], color="blue", linewidth=2, linestyle="-")
plt.ylim(0, 15)
plt.axis([2.1, 3.9, 0.5, 1.9])
plt.axes([0.55, 0.1, 0.3, 0.3], frameon=True, facecolor="y", aspect="equal")
plt.plot(4 + np.arange(3), [0, 1, 0], color="blue", linewidth=2, linestyle=":")
plt.ylim(0, 1.5)
plt.axis("off")
plt.show()

函数
axes(rect, frameon=True, facecolor="y")
rect = [left, bottom, width, height]
left和bottom分别表示坐标轴的左侧边缘和底部边缘距离画布边缘的距离,width和height分别表示坐标轴的宽度和高度
left和width是画布宽度归一化后的距离,bottom和height是画布高度归一化后的距离。
frameon=True
是否显示四条轴脊
facecolor="y"
填充坐标轴背景的颜色函数
axis()
[xmin, xmax, ymin, ymax]
显示坐标轴的范围option,可取值为
'on':打开坐标轴'off':关闭坐标轴显示'equal':设置相等的比例,y轴和x轴单位刻度对应长度是一样的'scaled':通过更改绘图框的尺寸设置相等的缩放比例'tight':设置足够大的限制来显示所有数据'auto':自动确定'image':‘scaled’ with axis limits equal to data limits'square':方形图,类似于‘scaled’,但是强制xmax-xmin = ymax-ymin
2. 坐标轴刻度的显示
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串
ax1 = plt.subplot(121)
ax1.set_xticks(range(0, 251, 50))
plt.grid(True, axis="x")
ax2 = plt.subplot(122)
ax2.set_xticks([])
plt.grid(True, axis="x")
plt.show()

如果不设置坐标轴刻度,则网格线也不会被设置。设置刻度还包括刻度标签,可以用函数
Axes.set_xticklabels()和Axes.set_yticklabels()设置对应刻度线的标签
3. 坐标轴的样式和位置的定制化展示
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib.ticker import FormatStrFormatter
from calendar import day_name
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串
fig = plt.figure()
ax = fig.add_axes([0.2, 0.2, 0.7, 0.7])
ax.spines["bottom"].set_position(("outward", 10))
ax.spines["left"].set_position(("outward", 10))
ax.spines["top"].set_color("none")
ax.spines["right"].set_color("none")
x = np.arange(1, 8, 1)
y = 2 * x + 1
ax.scatter(x, y, c="orange", s=50, edgecolors="orange")
for tickline in ax.xaxis.get_ticklines():
tickline.set_color("blue")
tickline.set_markersize(8)
tickline.set_markeredgewidth(5)
for ticklabel in ax.get_xmajorticklabels():
ticklabel.set_color("slateblue")
ticklabel.set_fontsize(12)
ticklabel.set_rotation(20)
ax.yaxis.set_major_formatter(FormatStrFormatter(f"$\yen%1.1f$"))
plt.xticks(x, day_name[0:7], rotation=20)
ax.yaxis.set_ticks_position("left")
ax.xaxis.set_ticks_position("bottom")
for tickline in ax.yaxis.get_ticklines():
tickline.set_color("lightgreen")
tickline.set_markersize(8)
tickline.set_markeredgewidth(5)
for ticklabel in ax.get_ymajorticklabels():
ticklabel.set_color("green")
ticklabel.set_fontsize(15)
ax.grid(ls=":", lw=1, color="gray", alpha=0.5)
plt.show()

4. 移动坐标轴的位置
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串
x = np.linspace(-2 * np.pi, 2 * np.pi, 200)
y = np.sin(x)
y1 = np.cos(x)
ax = plt.subplot(111)
ax.plot(x, y, ls="-", lw=2, label=r"$\sin(x)$")
ax.plot(x, y1, ls="-", lw=2, label=r"$\cos(x)$")
ax.legend(loc="lower left")
plt.title(r"$\sin(x)$" + "和" + r"$\cos(x)$" + "函数")
ax.set_xlim(-2 * np.pi, 2 * np.pi)
plt.xticks([-2 * np.pi, -3 * np.pi / 2, -1 * np.pi, -1 * np.pi / 2,
0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi],
[r"$-2\pi$", r"$-3\pi/2$", r"$-\pi$", r"$-\pi/2$",
r"$0$", r"$\pi/2$", r"$\pi$", r"$3\pi/3$", r"$2\pi$"]
)
ax.spines["right"].set_color("none")
ax.spines["top"].set_color("none")
ax.spines["bottom"].set_position(("data", 0))
ax.spines["left"].set_position(("data", 0))
ax.xaxis.set_ticks_position("bottom")
ax.yaxis.set_ticks_position("left")
plt.show()

ax.spines[key]会调用轴脊字典,如bottom、top、right、left键值是对应位置轴脊,ax.spines["bottom"].set_position(("data", 0))表示将底轴移到数轴0坐标位置
『Python』matplotlib坐标轴应用的更多相关文章
- 『Python』matplotlib共享绘图区域坐标轴
1. 共享单一绘图区域的坐标轴 有时候,我们想将多张图形放在同一个绘图区域,不想在每个绘图区域只绘制一幅图形.这时候,就可以借助共享坐标轴的方法实现在一个绘图区域绘制多幅图形的目的. import n ...
- 『Python』matplotlib的imshow用法
热力图是一种数据的图形化表示,具体而言,就是将二维数组中的元素用颜色表示.热力图之所以非常有用,是因为它能够从整体视角上展示数据,更确切的说是数值型数据. 使用imshow()函数可以非常容易地制作热 ...
- 『Python』matplotlib初识
1. 核心原理 使用matplotlib绘图的原理,主要就是理解figure(画布).axes(坐标系).axis(坐标轴)三者之间的关系. 下面这幅图更详细: 以"美院学生张三写生画画&q ...
- 『Python』matplotlib实现GUI效果
1. 类RadioButtons的使用方法 类似单选框 import numpy as np import matplotlib.pyplot as plt import matplotlib as ...
- 『Python』matplotlib实现动画效果
一般而言,在绘制复杂动画时,主要借助模块animation来完成 import numpy as np import matplotlib.pyplot as plt import matplotli ...
- 『Python』matplotlib划分画布的主要函数
1. subplot() 绘制网格区域中几何形状相同的子区布局 函数签名有两种: subplot(numRows, numCols, plotNum) subplot(CRN) 都是整数,意思是将画布 ...
- 『Python』matplotlib常用图表
这里简要介绍几种统计图形的绘制方法,其他更多图形可以去matplotlib找examples魔改 1. 柱状图 柱状图主要是应用在定性数据的可视化场景中,或是离散数据类型的分布展示.例如,一个本科班级 ...
- 『Python』matplotlib常用函数
1. 绘制图表组成元素的主要函数 1.1 plot()--展现量的变化趋势 import numpy as np import matplotlib.pyplot as plt import matp ...
- 『Python』__getattr__()特殊方法
self的认识 & __getattr__()特殊方法 将字典调用方式改为通过属性查询的一个小class, class Dict(dict): def __init__(self, **kw) ...
随机推荐
- SQL 练习36
查询不同课程成绩相同的学生的学生编号.课程编号.学生成绩 select a.cid, a.sid, a.score from sc as a,sc as b WHERE a.sid = b.sid a ...
- EZpop分析
首先源代码如下 <?php class Modifier { protected $var; public function append($value){ include($value); } ...
- 【转】new和malloc的区别
1. 申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存. 自由存储区是C++基于new操作符的一个抽象概念,凡是通过n ...
- 玩转Spring生命周期之Lifecycle
Lifecycle callbacks Initialization callbacks.Destruction callbacks要与容器的bean生命周期管理交互,即容器在启动后和容器在销毁前对每 ...
- Spring第一课:基于XML装配bean(四),三种实例化方式:默认构造、静态工厂、实例工厂
Spring中基于XML中的装配bean有三种方式: 1.默认构造 2.静态工厂 3.实例工厂 1.默认构造 在我们在Spring的xml文件中直接通过: <bean id=" ...
- sparksql字段类型转换
1.spark sql 计算时,一定要注意精度的问题,一般像金额之类的值,要先转换为double或者 decimal来进行计算了. 一.sql的方式:select shop_id,order_id,s ...
- 有关spring注解总结
前言 目前企业开发多采用纯注解的方式开发,注解开发的好处:简洁,可读性强 最近学习了spring全家桶,总结了有关spring的常用注解,写的不对的地方,欢迎指正 Spring模块注解 @Config ...
- C#窗体间互相传值
Demo窗体图片,Form1 Demo窗体图片,Form2 公共委托 using System; namespace _DeleFrm{ public class Dele { public ...
- Linux服务器JDK的安装
JDK安装 开发java程序必须要的环境 下载JDK rpm. 安装环境 #检测当前系统是否安装Java环境 java -version #如果有就需要卸载 #rpm -qa|grep jdk #检测 ...
- 分布式系列-分布式ID
一.数据库自增(单实例) 1.方案描述 基于数据库自增ID(auto_increment)利用其来充当分布式ID.实现方式就是用一张表来充当ID生成器,当我们需要ID时,向表中插入一条记录返回主键ID ...