【Python数据可视化】matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值

文章传送门

Python 数据可视化
matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图
matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值
matplotlib之增加图形内容:设置图例、设置中文标题、设置网格效果
matplotlib之设置子图:绘制子图、子图共享x轴坐标
matplotlib之绘制高级图形:散点图、热力图、等值线图、极坐标图
matplotlib之绘制三维图形:三维散点图、三维柱状图、三维曲面图

简述 / 前言

之前画的图形只有坐标值,没有坐标轴文字,这篇文章将分享如何添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值。


1. 添加坐标轴名字

关键语句:matplotlib.pyplot.xlabel()matplotlib.pyplot.ylabel()

示例:

import matplotlib.pyplot as plt
import numpy as np

# 设置x轴和y轴的坐标
x = np.arange(0, 9, 2)  # [0, 9) 每间隔1个数取一次值,即:x = [0 2 4 6 8]
y = np.array([0, 1, 4, 6, 8])

plt.plot(x, y, color='green', lw=3, marker='o', linestyle='--')  # 通过plot方法绘制折线
plt.xlabel('我是x轴')
plt.ylabel('我是y轴')
plt.show()  # 通过show方法展示

输出:
请添加图片描述

:可以看到输出的坐标轴名字有问题,中文字符乱码了,需要修改字体类型,改进代码如下:

示例1(修改全局字体——不太建议,因为有些符号不适配中文字体):

import matplotlib.pyplot as plt
import matplotlib
import numpy as np

matplotlib.rcParams['font.family'] = 'FangSong'
matplotlib.rcParams['font.style'] = 'italic'
matplotlib.rcParams['font.size'] = 16

# 设置x轴和y轴的坐标
x = np.arange(0, 9, 2)  # [0, 9) 每间隔1个数取一次值,即:x = [0 2 4 6 8]
y = np.array([0, 1, 4, 6, 8])

plt.plot(x, y, color='green', lw=3, marker='o', linestyle='--')  # 通过plot方法绘制折线
plt.xlabel('我是x轴')
plt.ylabel('我是y轴')
plt.show()  # 通过show方法展示

输出:
请添加图片描述

示例2(推荐——哪里要特定字体就设置哪里,还能多样化):
可以添加的常用属性有:

  • fontname : 字体名称
  • fontsize : 字体大小
import matplotlib.pyplot as plt
import numpy as np

# 设置x轴和y轴的坐标
x = np.arange(0, 9, 2)  # [0, 9) 每间隔1个数取一次值,即:x = [0 2 4 6 8]
y = np.array([0, 1, 4, 6, 8])

plt.plot(x, y, color='green', lw=3, marker='o', linestyle='--')  # 通过plot方法绘制折线
plt.xlabel('我是x轴', fontname='FangSong')
plt.ylabel('我是y轴', fontname='FangSong', fontsize=16)

plt.show()  # 通过show方法展示

输出:
请添加图片描述

值得注意的是,标签还可以用 latex 格式书写,适用于一些数学公式,示例如下:
示例:

import matplotlib.pyplot as plt
import numpy as np

# 设置x轴和y轴的坐标
x = np.arange(0, 30, 0.1)
y = np.sin(x)  # 绘图

plt.plot(x, y, color='green', lw=3, linestyle='-')  # 通过plot方法绘制折线
plt.xlabel(r'这是$\rm{sinx}$函数的$x$轴标签', fontname='FangSong', fontsize=16)   # \rm{}将公式转化为roman体
plt.ylabel('我是y轴', fontname='FangSong', fontsize=16)
plt.xlim(-1, 31)
plt.ylim(-2, 2)
plt.show()  # 通过show方法展示

输出:
请添加图片描述

2. 设置坐标范围

如果想要修改坐标轴显示的范围,可以使用 xlim()ylim 方法。

关键语句:matplotlib.pyplot.xlim()matplotlib.pyplot.ylim()

示例:

import matplotlib.pyplot as plt
import numpy as np

# 设置x轴和y轴的坐标
x = np.arange(0, 9, 2)  # [0, 9) 每间隔1个数取一次值,即:x = [0 2 4 6 8]
y = np.array([0, 1, 4, 6, 8])

plt.plot(x, y, color='green', lw=3, marker='o', linestyle='--')  # 通过plot方法绘制折线
plt.xlabel('我是x轴', fontname='FangSong', fontsize=16)
plt.ylabel('我是y轴', fontname='FangSong', fontsize=16)
plt.xlim(-2, 10)
plt.ylim(-2, 10)
plt.show()  # 通过show方法展示

输出:
请添加图片描述

值得注意的是,当你设置坐标范围后,超出设置坐标范围的图像将不会显示,所以一般都是不设置坐标范围的,除非有特定需求~

3. 设置主次刻度

  • 主刻度就是显示坐标轴数字的那个地方,比如我们买的尺子的 1,2,3,…cm。

  • 次刻度就是在两个主刻度之间再划分刻度,比如我们买的尺子在 1-1.5cm 之间有4个小竖线划分出5个小区间,这就是次刻度。

  • 主刻度显示数值,但是次刻度不显示数值!

  • x轴主刻度设置关键方法:matplotlib.pyplot.subplot().xaxis.set_major_locator()

    • x轴主刻度显示格式修改方法:matplotlib.pyplot.subplot().xaxis.set_major_formatter()
  • y轴主刻度设置关键方法:matplotlib.pyplot.subplot().yaxis.set_major_locator()

    • y轴主刻度显示格式修改方法:matplotlib.pyplot.subplot().yaxis.set_major_formatter()
  • x轴次刻度设置关键方法:matplotlib.pyplot.subplot().xaxis.set_minor_locator()

  • y轴次刻度设置关键方法:matplotlib.pyplot.subplot().yaxis.set_minor_locator()

示例:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FormatStrFormatter

xmajorLocator = MultipleLocator(5)  			# 将x轴主刻度设置为5的倍数
xmajorFormatter = FormatStrFormatter('%1.0f')  	# 设置x轴标签的格式
xminorLocator = MultipleLocator(1) 				# 将x轴次刻度设置为1的倍数
ymajorLocator = MultipleLocator(0.5)  			# 将y轴主刻度设置为0.5的倍数
ymajorFormatter = FormatStrFormatter('%1.1f')  	# 设置y轴标签的格式
yminorLocator = MultipleLocator(0.1)  			# 将y轴次刻度设置为0.1的倍数

x = np.arange(0, 30, 0.1)
# 设置子图,在ax里设置坐标轴刻度
ax = plt.subplot(111)
# 设置主刻度标签的位置,标签文本的格式
ax.xaxis.set_major_locator(xmajorLocator)
ax.xaxis.set_major_formatter(xmajorFormatter)
ax.yaxis.set_major_locator(ymajorLocator)
ax.yaxis.set_major_formatter(ymajorFormatter)

# 显示次刻度标签的位置
ax.xaxis.set_minor_locator(xminorLocator)
ax.yaxis.set_minor_locator(yminorLocator)
y = np.sin(x)  # 绘图
plt.plot(x, y)
plt.xlabel('x轴', fontname='FangSong', fontsize=16)
plt.ylabel('y轴', fontname='FangSong', fontsize=16)
plt.show()

输出:
请添加图片描述

4. 坐标轴文字旋转并标出坐标值

有时候坐标轴可能会显示日期,此时日期文字过长,我们可以旋转字体,使其看起来舒服一些~

  • 坐标轴文字旋转关键属性:rotation=rotation
  • 标出坐标值关键方法:matplotlib.pyplot.text()
    • 一般用法:matplotlib.pyplot.text(x, y, y, horizontalalignment=horizontalalignment, verticalalignment=verticalalignment, fontsize=fontsize)
    • 各属性含义如下:
      属性含义
      xx轴的点值
      yy轴的点值(第一个y是文字所在的坐标轴高度,第二个y是要显示的值)
      horizontalalignment垂直对齐方式,可以选:center, right, left
      verticalalignment水平对齐方式,可以选:top, bottom, center, baseline, center_baseline
      fontsize文字大小
      fontname文字样式名称
      fontweight字体粗细

示例:

import numpy as np
import matplotlib.pyplot as plt

# 折线图
x = np.array([1, 2, 3, 4, 5])
y = np.array([0, 1, 4, 6, 8])
plt.xticks(x, ('20240109', '20240110', '20240111', '20240112', '20240113'), rotation=45)
plt.yticks(np.arange(-1, 10.5, 0.5), rotation=30)
plt.ylim(-1, 10)

plt.plot(x, y, color='green', lw=3, marker='o', linestyle='--')
plt.xlabel('购买日期', fontname='FangSong', fontsize=16)
plt.ylabel('购买数量', fontname='FangSong', fontsize=16)
# 标出数值
for a, b in zip(x, y):
    plt.text(a, b+0.2, '%0.1f' % b, horizontalalignment='center', verticalalignment='bottom', fontsize=10)

plt.show()

输出:
请添加图片描述

  • 35
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Matplotlib 中绘制一个 y 轴在右侧的图表,可以使用`matplotlib.pyplot.subplots()`函数创建一个包含两个坐标轴的图像,然后调用其中一个坐标轴的`ax.twinx()`方法来创建一个第二个独立的 y 轴。可以在第二个坐标轴上绘制数据,并使用`ax.set_ylabel()`方法为每个坐标轴设置标签。 以下是一个示例代码,展示了如何画出 y 轴在右侧的图表: ```python import matplotlib.pyplot as plt import numpy as np # 创建一个包含两个坐标轴的图像 fig, ax = plt.subplots() # 创建第二个独立的 y 轴 ax2 = ax.twinx() # 绘制数据到第一个 y 轴 x = np.arange(0, 10, 0.1) y1 = np.sin(x) ax.plot(x, y1, 'b-') # 绘制数据到第二个 y 轴 y2 = np.exp(x) ax2.plot(x, y2, 'r-') # 设置每个坐标轴的标签 ax.set_xlabel('x') ax.set_ylabel('sin(x)', color='b') ax2.set_ylabel('exp(x)', color='r') # 调整第一个 y 轴的标签位置 ax.tick_params(axis='y', labelcolor='b') ax.yaxis.labelpad = 20 # 显示图表 plt.show() ``` 在这个示例中,`ax.twinx()`方法创建了一个第二个独立的 y 轴,它被分配给变量`ax2`。我们使用`ax.plot()`方法在第一个 y 轴上绘制一个蓝色的正弦曲线,使用`ax2.plot()`方法在第二个 y 轴上绘制一个红色的指数曲线。我们还使用`ax.set_ylabel()`和`ax2.set_ylabel()`方法为每个坐标轴设置标签,并使用`ax.tick_params()`方法调整第一个 y 轴的标签位置。 运行这个代码将会得到一个图像,其中正弦曲线在左侧 y 轴上绘制,指数曲线在右侧 y 轴上绘制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值