【问题标题】:python text to second y axispython文本到第二个y轴
【发布时间】:2017-04-28 08:16:49
【问题描述】:

我正在尝试使用 matplotlib 在 python 中制作我的第一个绘图,但我希望绘图中的文本位于绘图“外部”,即在该行旁边而不是在其上方或下方。

plt.figure()
plt.scatter(mean, diff, color='k')

plt.axhline(md,           color='black', linestyle='-', lw=3)
plt.axhline(md + 1.96*sd, color='black', linestyle='--')
plt.axhline(md - 1.96*sd, color='black', linestyle='--')
plt.axhline(0, color='black', linestyle='--')

plt.ylim(-max(diff)*2, max(diff)*2)
plt.xlabel('Mean')
plt.ylabel('Difference')
plt.title('Bland altman plot for ' + variable)

txt1=('+1.96 SD')
txt2=('-1.96 SD')
txt3 =('Mean')

x = max(mean)
plt.text(x, md+1.96*sd, txt1, horizontalalignment='left', verticalalignment='bottom', fontweight='bold')
plt.text(x, md-1.96*sd, txt2, horizontalalignment='left', verticalalignment='top', fontweight='bold')
plt.text(x, 0.1, txt3)

结果是:

【问题讨论】:

标签: python matplotlib


【解决方案1】:

您仍然需要将标签放置在坐标区边缘的主要成分是坐标区边缘的坐标。您可以通过plt.gca().get_xlim() 获取这些信息。然后可以将上限用作文本标签的x 位置。

import matplotlib.pyplot as plt
import numpy as np

X = np.random.normal(size=(12))
Y = np.random.normal(size=(12))

plt.figure()
plt.scatter(X, Y, color='k')

plt.axhline(Y.mean(),           color='black', linestyle='-', lw=3)
plt.axhline(Y.mean() + 1.96*Y.std(), color='black', linestyle='--')
plt.axhline(Y.mean() - 1.96*Y.std(), color='black', linestyle='--')
plt.axhline(0, color='black', linestyle='--')

txt1=(' +1.96 SD')
txt2=(' -1.96 SD')
txt3 =(' Mean')

x0,x1 = plt.gca().get_xlim()
plt.text(x1, Y.mean() + 1.96*Y.std(), txt1, ha='left', va='center', fontweight='bold')
plt.text(x1, Y.mean() - 1.96*Y.std(), txt2, ha='left', va='center', fontweight='bold')
plt.text(x1, 0, txt3, ha='left', va='center',)

# make more space on right side to host the labels
plt.subplots_adjust(right=0.8)
plt.show()

请注意,这是非常基本(但也很容易理解)的版本。

如果您对转换感到满意,您可以在这个问题中使用该技术:

Add a label to y-axis to show the value of y for a horizontal line in matplotlib

【讨论】:

  • 如果 x 轴是日期,那么在 plt.text(x1, Y.mean() + 1.96*Y.std(), txt1, ha='left', va='center', fontweight='bold') 中应该用 x1 替换什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多