gpt4 book ai didi

python - 通过在 matplotlib 中使用 Latex 在 xticklabel 中的正值和负值之间的差异

转载 作者:IT老高 更新时间:2023-10-28 21:14:29 25 4
gpt4 key购买 nike

我在 matplotlib 中设置 usetext=True 以使用 Latex 来管理我的绘图中的字体布局。现在 x 轴和 xticklabel 之间的空间对于正值和负值是不同的,如图所示。

是否有可能获得相同的空间?

例子:

import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(-10.0, 10.0, 100)
s = np.cos(t)

plt.rc('text', usetex=True)

plt.rc('font', family='serif', size=30)
plt.plot(t, s)

plt.show()

enter image description here

最佳答案

不幸的是,这个错误已经存在了这么久,而且这里的大多数答案都认为问题是关于水平对齐而不是垂直间距。

The bug是已知的,也有补丁修复,但是一直没有合并,干脆被列为近一年半的需要review。

有趣的是,这是一个相当令人困惑的错误。最初出现的问题是,出于某种原因,TeX 给一个减号(和其他几个数学符号)一个下降值,表明它延伸到基线以下。 dvipng,用于在光栅后端创建标签,只是裁剪到可见,所以这无关紧要。但是为了保持实际上确实有下降的东西对齐,matplotlib 有一个单独的系统 dviread,它从 dvi 文件本身读取值。这将获取奇数下降值。然后 matplotlib 的对齐系统,认为 png 的一部分应该低于基线,将其向下移动。

错误报告中的修复非常简单,但我不完全确定它是如何工作的。不过,我已经尝试过了,它确实有效。

当然,这个问题是在 2013 年提出的,所以看起来该补丁不会很快应用。那么有哪些替代方案呢?

一个简单的选择是在工作时忽略对齐问题,但在进行演示输出时,请使用 pdf 后端。如果您想要图像,您可以随时使用其他软件进行转换。 pdf 后端不会遇到同样的问题,因为它处理 TeX 部分的方式完全不同。

另一种选择是只调整负面 xticks 的位置。理论上,您可以从 _get_layout 中提取精确的调整,这将为您提供下降值,但我不确定如何转换这些值。所以这里有一个只关注对齐的例子:

import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(-10.0, 10.0, 100)
s = np.cos(t)

i = [-10,-5,0,5,10]

plt.rc('text', usetex=True)

plt.rc('font', family='serif', size=30)
plt.plot(t, s)

for n,l in zip(*plt.xticks()):
if n<0: l.set_position((0,0.014))

关于python - 通过在 matplotlib 中使用 Latex 在 xticklabel 中的正值和负值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19764214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com