在同一轴上打印多个标签

2024-05-16 00:02:30 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑绘制两个不同总体的简单图:

enter image description here

我想在同一个左y轴上添加两个独立的y标签,一个用于顶部群体,另一个用于下面的群体。我看到的所有类似问题都涉及两个独立轴上的标签(即:一个在左边,一个在右边),这不是我需要的。你知道吗

我该怎么做?你知道吗

import numpy as np
import matplotlib.pyplot as plt

N = 50
a = np.random.uniform(100., 120., N)
b = np.random.uniform(10., 20., N)

plt.scatter(range(N), a)
plt.scatter(range(N), b)
plt.show()

这个问题不是关于向图例添加标签,如here所述。


Tags: importnumpymatplotlibasnp绘制rangeplt
1条回答
网友
1楼 · 发布于 2024-05-16 00:02:30

您可能会误用y轴的次刻度来在这些位置放置标签。这里我们可以取数据的平均值来创建一个小刻度。勾号可以关闭,标签可以填充、旋转和对齐,使其看起来与普通标签相似。你知道吗

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

N = 50
a = np.random.uniform(100., 120., N)
b = np.random.uniform(10., 20., N)

plt.scatter(range(N), a)
plt.scatter(range(N), b)

ax = plt.gca()
ax.yaxis.set_minor_locator(mticker.FixedLocator((a.mean(), b.mean())))
ax.yaxis.set_minor_formatter(mticker.FixedFormatter(("Label A", "Label B")))
plt.setp(ax.yaxis.get_minorticklabels(), rotation=90, size=15, va="center")
ax.tick_params("y",which="minor",pad=25, left=False)


plt.show()

enter image description here

相关问题 更多 >