столбчатая диаграмма matplotlib с нулевым центром

#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()
 

sns.барплот, соединяющий положительные и отрицательные стороны