#matplotlib
Вопрос:
У меня есть набор данных, как показано ниже.
т / ф | Ценность | Категория |
---|---|---|
T | 1 | A |
F | 3 | B |
T | 5 | C |
F | 7 | A |
T | 8 | B |
… | … | … |
итак, я хочу нарисовать столбчатую диаграмму, как показано ниже. та же категория имеет ту же позицию
та же категория имеет ту же позицию, нулевой стержень по центру и номер F-это стержень ниже горизонтальной линии, T — верхний стержень.
Как я могу создать эту диаграмму с помощью matplotlib.pyplot? или другая библиотека
Мне нужен пример.
Ответ №1:
Один из подходов заключается в том, чтобы сделать False
значения отрицательными, а затем создать морского рожка barplot
с T/F
таким оттенком. Возможно, вам захочется сделать копию данных, если вы не можете изменить оригинал.
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
data = pd.DataFrame({'T/F': ['T', 'F', 'T', 'F', 'T'],
'Value': [1, 3, 5, 7, 8],
'category': ['A', 'B', 'C', 'A', 'B']})
data['Value'] = np.where(data['T/F'] == 'T', data['Value'], -data['Value'])
ax = sns.barplot(data=data, x='category', y='Value', hue='T/F', dodge=False, palette='turbo')
ax.axhline(0, lw=2, color='black')
plt.tight_layout()
plt.show()