python - 给定一些数据,我如何预测 matplotlib 将在何处绘制刻度?

标签 python matplotlib plot

Matplotlib 可以很好地设置轴上的限制和刻度以捕获数据的范围,同时将刻度放在间隔良好的整数上。

我希望能够在它发生之前预测一组数据将在何处绘制刻度(实际上,我很高兴知道刻度的限制,我不需要知道特别是内部刻度将被绘制的位置)。

我已经查看了 Axes 和各种 Ticker 对象,但我似乎无法找到发生这种情况的位置。理想情况下,我正在寻找一个函数 automatic_ticker 这样如果我有两个向量,

x, y = np.random.randn(2, 30)

我可以打电话

xticks_predict = plt.automatic_ticker(x)

然后

plt.plot(x, y)
xticks_actual, _ = plt.xticks()

assert tuple(xticks_predict) == tuple(xticks_actual)

这个存在吗?

最佳答案

我认为您正在寻找类似的东西:

from matplotlib.ticker import MaxNLocator
xticks_predict = MaxNLocator(integer=True, symmetric=True).tick_values(x.min(), x.max())

但我发现测试与 plt.plot(x, y) 中使用的刻度存在一些差异,其中大部分似乎是关于原点的不对称刻度范围 --- 即使 symmetric=Truedocs指示 AutoLocator 作为典型的默认值,但我发现当 plt.plot() 中使用的刻度都是整数时,它会返回小数刻度位置(例如 2.5)。

当然,您可以通过将绘图刻度设置为预测刻度来“作弊”:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import MaxNLocator

np.random.seed(seed=0)
x, y = np.random.randn(2, 30)
ticking = MaxNLocator(integer=True, symmetric=True)
xticks_predict = ticking.tick_values(x.min(), x.max())
plt.plot(x, y)
plt.xticks(xticks_predict)
plt.savefig("example.pdf")

关于python - 给定一些数据,我如何预测 matplotlib 将在何处绘制刻度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21339905/

相关文章:

python - 迭代 Pandas Dataframe 中的日期以获取每周不同列的计数

来自 x,y,z 数据的 matplotlib pcolormesh 图

matlab - 如何将(值的)标签添加到我的 MATLAB 图的顶部?

python - 如何绘制非方形 Seaborn jointplot 或 JointGrid

python - 无模式对话框 tkinter

python - 我们什么时候应该在递归中添加 return

python - 如何在不使用 `plot3d_parametric_line` 的情况下绘制参数曲线

python - 如何在 mac 上使用 python 最大化 plt.show()?

r - 用 R 中的颜色和频率绘制混淆矩阵

python - Flask-admin - 如何更改列的格式 - 获取要显示的 URL