gpt4 book ai didi

python - 如何在 matplotlib 轴上标记一系列值?

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:29 25 4
gpt4 key购买 nike

在我的直方图中,我需要像这样注释 X 轴: enter image description here

“0”标签跨越两个刻度,因为在直方图中有一个单独的 0 分箱,而轴的其余部分是线性的以指示其他分箱的边界。underbrace 不是关键,但应该有一些指示器表明“0”跨越整个 bin。

目前我找到的最接近的解决方案是“自己画”(How to add group labels for bar charts in matplotlib?)。我正在寻找轴的等效 .axvspan()(因为 .axvline() 是刻度),就像用于标记 .axvspan().

最佳答案

没有.axvspan() 等价于轴”。此外,".axvline()" 不是"for ticks"。而且也没有用于标记 .axvspan() 的内容。

那么让我们来回答如何在图下方生成一些红色括号(括号)的问题。您基本上可以只绘制一条括号形式的线并根据 xaxis 变换定位它。下面是执行此操作的函数。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.bar(range(-1,5),range(3,9), width=1, align="edge", ec="k", alpha=1)
ax.set_xticks(range(1,6))


def bracket(ax, pos=[0,0], scalex=1, scaley=1, text="",textkw = {}, linekw = {}):
x = np.array([0, 0.05, 0.45,0.5])
y = np.array([0,-0.01,-0.01,-0.02])
x = np.concatenate((x,x+0.5))
y = np.concatenate((y,y[::-1]))
ax.plot(x*scalex+pos[0], y*scaley+pos[1], clip_on=False,
transform=ax.get_xaxis_transform(), **linekw)
ax.text(pos[0]+0.5*scalex, (y.min()-0.01)*scaley+pos[1], text,
transform=ax.get_xaxis_transform(),
ha="center", va="top", **textkw)

bracket(ax, text="0", pos=[-1,-0.01], linekw=dict(color="crimson", lw=2) )
plt.show()

enter image description here

关于python - 如何在 matplotlib 轴上标记一系列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47914905/

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