matplotlib左上角数量级的字体大小

部署运行你感兴趣的模型镜像

要把
before
左上角的 1e7 调大,效果:
after
要调的这个东西叫 offset_text,例程:

import os
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt


font = {
    'family' : 'Times New Roman',
    'weight' : 'normal',
    'size'   : 18,
}

stat = np.load("stat.npy")  # [n]
fig = plt.figure()
ax = plt.gca()

ax.bar(np.arange(stat.shape[0]), stat)
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', -1))

#-----------------------------------------------
#             调数量级字体大小
# ax.xaxis.get_offset_text().set(size=20)
ax.yaxis.get_offset_text().set(size=20)  # 左上角
#-----------------------------------------------

plt.xlim((-1, stat.shape[0]))
# plt.ylim((0, 1.01))
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
# plt.xlabel("x", font)
# plt.ylabel("y", font)

ax = plt.gca()
# ax.set_aspect(0.5 / ax.get_data_ratio(), adjustable='box')

# 如果 `plt.xticks(fontsize=20)` 失效,就换成这两句。见 [4]
#for tick in ax.xaxis.get_major_ticks():
#    tick.label.set_fontsize(20)
#for tick in ax.yaxis.get_major_ticks():
#    tick.label.set_fontsize(20)

plt.grid()
plt.tight_layout()

fig.savefig('test.jpg', pad_inches=0.0)
fig.savefig('test.pdf', pad_inches=0.0, backend='pgf')
plt.close(fig)

References

  1. 如何更改colorbar上基数和指数的字体大小?
  2. python matplotlib 画图保存前后显示不完整的处理
  3. Usage
  4. Matplotlib make tick labels font size smaller

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think> 我们之前已经讨论过如何增大偏移量文本(即左上角的"1e7")的字号。现在,用户再次确认这个问题,并希望得到更明确的解答。根据引用[1]中提到的对象导向接口,我们可以直接访问和修改偏移量文本对象的属性。 具体步骤: 1. 获取y轴偏移量文本对象:`offset_text = ax.yaxis.get_offset_text()` 2. 设置该文本对象的字号:`offset_text.set_fontsize(desired_size)` 同时,用户可能还想了解如何全局设置(通过rcParams)以避免每次手动设置。根据引用[1]和引用[4]中关于rcParams和字体设置的内容,我们可以通过修改rcParams来全局设置偏移量文本的字体大小。 但是需要注意:偏移量文本实际上属于刻度标签的一部分,因此我们可以通过设置刻度标签的字体大小来影响它,但有时可能需要单独设置。 全局设置方法(影响所有文本): ```python plt.rcParams['font.size'] = 12 # 全局字体大小 plt.rcParams['ytick.labelsize'] = 12 # y轴刻度标签字体大小 ``` 但是,偏移量文本的字体大小也可以通过`offset_text.set_fontsize()`单独设置,且优先级更高。 因此,我们提供两种方案: 方案一:单独修改当前图中的偏移量文本(推荐,更精确) 方案二:通过rcParams全局修改(影响整个脚本) 下面给出完整代码示例: </think> # Matplotlib 中增大坐标轴偏移量字号的方法 当 Matplotlib 坐标轴范围很大时(如 `ylim` 设置为大值),系统会在左上角自动添加科学计数法表示的缩放因子(如 "1e7")。要增大这个缩放因子的字号,可以通过以下方法实现: ## 核心解决方案 ```python import matplotlib.pyplot as plt import numpy as np # 创建图形和坐标轴 fig, ax = plt.subplots(figsize=(10, 6)) # 生成大范围数据 - y值达到10^7量级 x = np.linspace(0, 10, 100) y = np.linspace(0, 1e7, 100) # y值范围0-10^7 # 绘制数据 ax.plot(x, y) # 设置y轴范围(会触发"1e7"显示) ax.set_ylim(0, 1.2e7) # 获取偏移量文本对象并修改字号★★★★★ offset_text = ax.yaxis.get_offset_text() offset_text.set_fontsize(24) # 增大字号 offset_text.set_weight('bold') # 可选:加粗字体 offset_text.set_color('darkred') # 可选:修改颜色 # 可选:同步调整刻度标签字号 ax.tick_params(axis='y', labelsize=16) plt.tight_layout() plt.show() ``` ## 关键步骤说明 1. **获取偏移量文本对象**: ```python offset_text = ax.yaxis.get_offset_text() ``` 这是控制左上角缩放因子(如 "1e7")的关键对象[^1] 2. **修改字体属性**: ```python offset_text.set_fontsize(24) # 设置字号 offset_text.set_weight('bold') # 设置字体粗细 offset_text.set_color('darkred') # 设置字体颜色 ``` 可以链式调用这些方法来一次性设置多个属性 3. **可选增强**: ```python # 全局设置字体(影响所有文本元素) plt.rcParams.update({'font.size': 16}) # 自定义偏移量文本位置 offset_text.set_position((0.02, 0.95)) # 相对坐标 # 使用LaTeX格式显示偏移量 offset_text.set_text(r'$\times\mathsf{10^{7}}$') ``` ## 进阶技巧 ### 全局设置方法 通过修改 `rcParams` 可以全局设置偏移量文本样式,避免每次手动调整: ```python plt.rcParams['ytick.major.size'] = 8 plt.rcParams['ytick.minor.size'] = 4 plt.rcParams['ytick.labelsize'] = 14 plt.rcParams['axes.titlesize'] = 16 plt.rcParams['axes.labelsize'] = 14 ``` ### 科学计数法格式优化 ```python # 强制使用科学计数法显示 ax.ticklabel_format(axis='y', style='sci', scilimits=(0,0)) # 自定义偏移量格式 offset_text.set_text(r'$\times\mathsf{10^{7}}$') # LaTeX格式 offset_text.set_fontsize(20) ``` ## 相关问题 1. 如何在 Matplotlib 中自定义坐标轴偏移量的位置和样式?[^1] 2. 当数据范围跨越多个数量级时,有哪些优化坐标轴显示的专业方法?[^2] 3. 如何全局设置 Matplotlib 中所有文本元素的字体属性?[^4] 4. Matplotlib 中有哪些高级方法可以清晰表达大范围数据的量级?[^5] 通过上述方法,您可以精确控制 Matplotlib 中坐标轴缩放因子的显示效果,确保图表在展示大范围数据时保持专业美观的外观。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值