Python-在小节上方绘制T_value

时间:2019-02-11 18:10:09

标签: python matplotlib plot

这是我正在做的最小示例代码:

B = np.array([0.6383447, 0.5271385, 1.7721380, 1.7817880])
b_mean = mean(B)
ori_t = stats.ttest_1samp(B, 0)[0]
r1 = [1]
plt.bar(r1,b_mean,width=barWidth, color="blue")

此代码产生一个'B'数组平均值的条形图。现在,我想添加T值(在第3行提取),并将其显示在小节图上方。我尝试了以下方法:

plt.text(x=r1, y=b_mean+0.1, s=ori_t, size = 6)

每次返回

TypeError: float() argument must be a string or a number

我不明白。有人知道如何实现或克服吗?

1 个答案:

答案 0 :(得分:1)

问题是您正在传递r1 = [1]作为文本的x位置。 r1是一个不能用于指定文本位置的列表。 x中的yplt.text自变量应为标量。因此,要么写x=1,要么写x=r1[0],两者都是标量。我在回答中加入了缺失的进口,以使其完整。我还相应地调整了y限制。

来自docs

  

x,y:标量   放置文本的位置。默认情况下,这是在数据坐标中。可以使用transform参数更改坐标系。

from scipy import stats
import numpy as np
import matplotlib.pyplot as plt

B = np.array([0.6383447, 0.5271385, 1.7721380, 1.7817880])
b_mean = np.mean(B)
ori_t = stats.ttest_1samp(B, 0)[0]

r1 = [1]
plt.bar(r1,b_mean,width=0.02, color="blue")

plt.text(x=r1[0], y=b_mean+0.1, s=ori_t, size = 10)
# plt.text(x=1, y=b_mean+0.1, s=ori_t, size = 10)
plt.ylim(0, b_mean+0.2)
plt.show()

enter image description here