Python - вычерчивание T_value выше барплота - PullRequest
0 голосов
/ 11 февраля 2019

Это минимальный пример кода того, что я делаю:

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 голосов
/ 11 февраля 2019

Проблема в том, что вы передаете r1 = [1] в качестве x-позиции для вашего текста.r1 - это список, который нельзя использовать для указания положения текста.x и y аргументы в plt.text должны быть скалярами.Так что либо вы пишете x=1, либо вы пишете x=r1[0], оба из которых являются скалярами.Я включил отсутствующий импорт в свой ответ, чтобы завершить его.Я также соответствующим образом скорректировал y-пределы.

Из документов :

x, y: скаляры Позиция для размещения текста.По умолчанию это в координатах данных.Систему координат можно изменить с помощью параметра преобразования.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...