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]

      leftbottom分别表示坐标轴的左侧边缘和底部边缘距离画布边缘的距离,widthheight分别表示坐标轴的宽度和高度

      leftwidth是画布宽度归一化后的距离,bottomheight是画布高度归一化后的距离。

    • 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]会调用轴脊字典,如bottomtoprightleft键值是对应位置轴脊,ax.spines["bottom"].set_position(("data", 0))表示将底轴移到数轴0坐标位置

『Python』matplotlib坐标轴应用的更多相关文章

  1. 『Python』matplotlib共享绘图区域坐标轴

    1. 共享单一绘图区域的坐标轴 有时候,我们想将多张图形放在同一个绘图区域,不想在每个绘图区域只绘制一幅图形.这时候,就可以借助共享坐标轴的方法实现在一个绘图区域绘制多幅图形的目的. import n ...

  2. 『Python』matplotlib的imshow用法

    热力图是一种数据的图形化表示,具体而言,就是将二维数组中的元素用颜色表示.热力图之所以非常有用,是因为它能够从整体视角上展示数据,更确切的说是数值型数据. 使用imshow()函数可以非常容易地制作热 ...

  3. 『Python』matplotlib初识

    1. 核心原理 使用matplotlib绘图的原理,主要就是理解figure(画布).axes(坐标系).axis(坐标轴)三者之间的关系. 下面这幅图更详细: 以"美院学生张三写生画画&q ...

  4. 『Python』matplotlib实现GUI效果

    1. 类RadioButtons的使用方法 类似单选框 import numpy as np import matplotlib.pyplot as plt import matplotlib as ...

  5. 『Python』matplotlib实现动画效果

    一般而言,在绘制复杂动画时,主要借助模块animation来完成 import numpy as np import matplotlib.pyplot as plt import matplotli ...

  6. 『Python』matplotlib划分画布的主要函数

    1. subplot() 绘制网格区域中几何形状相同的子区布局 函数签名有两种: subplot(numRows, numCols, plotNum) subplot(CRN) 都是整数,意思是将画布 ...

  7. 『Python』matplotlib常用图表

    这里简要介绍几种统计图形的绘制方法,其他更多图形可以去matplotlib找examples魔改 1. 柱状图 柱状图主要是应用在定性数据的可视化场景中,或是离散数据类型的分布展示.例如,一个本科班级 ...

  8. 『Python』matplotlib常用函数

    1. 绘制图表组成元素的主要函数 1.1 plot()--展现量的变化趋势 import numpy as np import matplotlib.pyplot as plt import matp ...

  9. 『Python』__getattr__()特殊方法

    self的认识 & __getattr__()特殊方法 将字典调用方式改为通过属性查询的一个小class, class Dict(dict): def __init__(self, **kw) ...

随机推荐

  1. NOIP 模拟 $28\; \rm 遗忘之祭仪$

    题解 \(by\;zj\varphi\) 直接贪心模拟即可,对于每个点,如果它未被覆盖,直接在这覆盖一次. 每个黑点只会被扫一次,所以总复杂度为 \(\mathcal O\rm (nm)\) Code ...

  2. flutter中将widget转为base64

    flutter中可以通过RepaintBoundary widget中的toImage方法将页面中的widget转为base64. 如何使用? 首先要在全局定义一个global key,分配给Repa ...

  3. restore db fail

    System.Data.SqlClient.SqlError: The operating system returned the error '5(Access is denied.)' while ...

  4. 转:NGINX中的proxy_pass和rewrite

    章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/6807081.html 转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点,如有 ...

  5. C# - 音乐小闹钟_BetaV2.0

    时间:2017-11-21 作者:byzqy  介绍: 虽然上一版本基本实现了闹钟的功能,但是界面.功能.用户体验(简直谈不上体验^_^),以及众多的bug,所以升级,刻不容缓! 还是先看一下Beta ...

  6. AbpVnext使用分布式IDistributedCache Redis缓存(自定义扩展方法)

    AbpVnext使用分布式IDistributedCache缓存from Redis(带自定义扩展方法) 我的依赖包的主要版本以及Redis依赖如下 1:添加依赖 <PackageReferen ...

  7. uni-app 小程序从零开始的开发流程

    前言 本文基于 HBuilderX 3.1.22 + 微信开发者工具 1.05.2106300为主要内容进行说明. 文档版本:1.0.0 更新时间:2021-09-03 15:32 一.准备 uni- ...

  8. 【XSS】XSS修炼之独孤九剑

    题目地址 xcao.vip/test 题目作者给出的解题思路 http://xcao.vip/test/xss/XSS修炼之独孤九剑.pdf 独孤九剑-第一式 题目 过滤了等号 =.小括号 (),要求 ...

  9. 前缀和的n个神奇操作

    前情回顾 前缀和的基础用法戳这里->传送门 众所周知,简单的前缀和解决的一般都是静态查询的问题,例如区间和.区间积等 操作的时候也很简单,就是根据需要来维护一个数组,每次查询的时候就用到tr[r ...

  10. 机械硬盘换到SSD后系统引导报错代码0xc000000e

    由于机械硬盘IO不够用,系统使用起来非常的缓慢,特意购买了新的SSD进行了替换.机械硬盘的IO在70左右,SSD的IO在1000-4000左右指普通消费SSD. 由于不想安装系统,就直接把机械硬盘的数 ...