繁体   English   中英

Seaborn 和 Matplotlib 添加相对于轴的文本

[英]Seaborn & Matplotlib Adding Text Relative to Axes

尝试使用 seaborn 和 matplotlib 绘制一些数据,需要在我的绘图中添加一些描述性文本,通常我只使用 matplotlib 命令文本,并将其放置在相对于轴的位置,但它似乎没有根本没有工作,除了轴、刻度等上的默认内容之外,我没有显示任何文本。我想要的是在绘图区域的左上角显示一些自定义文本。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

df 是我的熊猫数据框,它只包含一些时间列和带有标记“p”的坐标数据,这是一个标识符。

ax2 = sns.scatterplot("t","x", data = df, hue = "p")
ax2.text(0.1, 0.9, r"$s = {}, F = {}, N = {}$".format(value1, valu2, value3))

plt.show()

任何人都知道我如何让一些文本显示,相对定位,“值”项只是我想要打印的数据的变量。 谢谢。

您想在“绘图区域的左上角”放置一个文本。 “绘图区域”称为轴。 想到了三个解决方案:

坐标区中的文本

您可以在轴坐标中指定文本。 这些范围从坐标区左下角的(0,0)到坐标区右上角的(1,1) 相应的转换是通过ax.transAxes获得的。

import matplotlib.pyplot as plt
fig, ax = plt.subplots()

ax.text(0.02, 0.98, "Text", ha="left", va="top", transform=ax.transAxes)

plt.show()

带有偏移量的注释

在上面的文本和左上角之间的距离将取决于轴的大小。 因此,将文本准确定位在左上角(即轴坐标中的(0,1) )然后将其偏移一些点(即以绝对单位)可能会有所帮助。

ax.annotate("Text", xy=(0,1), xycoords="axes fraction",
                    xytext=(5,-5), textcoords="offset points",
                    ha="left", va="top")

这里的结果与上面的类似,但与轴或图形大小无关; 文本将始终与左上角相距 5 pts。

锚定位置的文本

最后,您可能根本不想指定任何坐标。 毕竟"upper left"应该足以作为定位信息。 这将通过AnchoredText实现,如下所示。

import matplotlib.pyplot as plt
from matplotlib.offsetbox import AnchoredText

fig, ax = plt.subplots()

anc = AnchoredText("Text", loc="upper left", frameon=False)
ax.add_artist(anc)

plt.show()

为了在事先不知道限制的情况下将文本定位在绘图的左上角,您可以查询轴的 x 和 y 限制,并使用它来相对于绘图的边界定位文本。 考虑这个例子(我还包含了生成一些随机数据以进行演示的代码)

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

np.random.seed(1)
df = pd.DataFrame({'t':np.linspace(1,2,100),
                  'x':np.random.randn(100)})

value1 = 1
value2 = 2
value3 = 3
ax2 = sns.scatterplot("t","x", data = df)
tl = ((ax2.get_xlim()[1] - ax2.get_xlim()[0])*0.010 + ax2.get_xlim()[0],
      (ax2.get_ylim()[1] - ax2.get_ylim()[0])*0.95 + ax2.get_ylim()[0])
ax2.text(tl[0], tl[1], r"$s = {}, F = {}, N = {}$".format(value1, value2, value3))

plt.show()

这将输出

文本位于左上角

并且改变边界不会改变文本的位置,即

位于左上角的文本(具有更大的边界)

您可能需要根据您希望文本与角落的接近程度,根据需要调整乘数0.010.95

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM