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. Specification排序orderby

    废话不多说直接贴代码 Specification<Course> sf = new Specification<Course>() { @Override public Pre ...

  2. WPF---数据绑定(二)

    一.绑定到非UI元素 上篇中,我们绑定的数据源均是派生自UIElement的WPF元素.本篇描述的绑定数据源是一个我们自定义的普通的类型. 注:尽管绑定的数据源可以是任意类型的对象,但Path必须总是 ...

  3. SpringMVC之@ControllerAdvice

    @ControllerAdvice ,很多初学者可能都没有听说过这个注解,实际上,这是一个非常有用的注解,顾名思义,这是一个增强的 Controller.使用这个 Controller ,可以实现三个 ...

  4. mzy对于反射的复习

    反射其实就是指在超脱规则的束缚,从强引用到弱相关,在上帝视角做事情,对于写配置文件,和一些框架的源码,得到调用上至关重要,java带有解释器的语法特性,使得泛型一类的语法糖和反射配合之后更如鱼得水! ...

  5. 【CSS复合选择器、元素显示模式、背景】前端小抄(3) - Pink老师自学笔记

    [CSS复合选择器.元素显示模式.背景]前端小抄(3) 本学习笔记是个人对 Pink 老师课程的总结归纳,转载请注明出处! 一.CSS的复合选择器 1.1 什么是复合选择器 在 CSS 中,可以根据选 ...

  6. node十年心酸史,带你了解大前端的由来!

    前言 近年来,随着前端的丰富,前后端分离是趋势.各种东西如雨后春笋一般,层出不穷.node.js的出现,使前端真正意义上变成了大前端. 前端由来之HTML发展史 1990 年,Tim Berners- ...

  7. 使用ECharts绘制网址径向树状图

    an.rustfisher.com有很多内容,很多页面.如果用一个树状图把所有页面展示出来会是什么效果? 第一时间想到了ECharts. 最后效果: https://an.rustfisher.com ...

  8. MPI集群搭建

    高性能计算     ubantu下集群搭建 参考博客:https://blog.csdn.net/u012304016/article/details/52423738(尊重别人的知识产权),一些细节 ...

  9. 15-SpringCloud Stream

    Stream是什么及Binder介绍 官方文档1 官方文档2 Cloud Stream中文指导手册 什么是Spring Cloud Stream? 官方定义Spring Cloud Stream是一个 ...

  10. zset类型数据的操作指令

    1. 也可以追加数据 2. 3. 4. 5. 6. 7. 8. 9.