Matplotlib: как получить пространство между барами?
Привет я начал использовать matplotlib и пытался адаптировать пример кода на веб-сайте в соответствии с моими потребностями. У меня есть код ниже, который делает то, что я хочу, кроме 3-го бара в каждой группе, перекрывает первый из следующей группы баров. Интернет недостаточно хорош, чтобы добавить изображение, но любая помощь была бы отличной, и если бы вы могли объяснить, что моя ошибка будет оценена.
спасибо, Тома
"""
Bar chart demo with pairs of bars grouped for easy comparison.
"""
import numpy as np
import matplotlib.pyplot as plt
n_groups = 3
means_e1 = (20, 35, 30)
std_e1 = (2, 3, 4)
means_e2 = (25, 32, 34)
std_e2 = (3, 5, 2)
means_e3 = (5, 2, 4)
std_e3 = (0.3, 0.5, 0.2)
fig, ax = plt.subplots()
index = np.arange(n_groups)
bar_width = 0.35
opacity = 0.4
error_config = {'ecolor': '0.3'}
rects1 = plt.bar(index , means_e1, bar_width,
alpha=opacity,
color='b',
yerr=std_e1,
error_kw=error_config,
label='Main')
rects2 = plt.bar(index + bar_width + 0.1, means_e2, bar_width,
alpha=opacity,
color='r',
yerr=std_e2,
error_kw=error_config,
label='e2')
rects3 = plt.bar(index + bar_width + bar_width + 0.2, means_e3, bar_width,
alpha=opacity,
color='g',
yerr=std_e3,
error_kw=error_config,
label='e3')
plt.xlabel('Dataset type used')
plt.ylabel('Percentage of reads joined after normalisation to 1 million reads')
plt.title('Application of Thimble on datasets, showing the ability of each stitcher option.')
plt.xticks(index + bar_width + bar_width, ('1', '2', '3'))
plt.legend()
plt.tight_layout()
plt.show()
1 ответов
на bar_width + bar_width + 0.2
is 0.9
. Теперь вы добавляете еще один бар bar_width
(0.35
), Так что в целом у вас есть 1.25
, что превышает 1
. С 1
- это расстояние между последующими точками индекса, у вас перекрытие.
вы можете либо увеличить расстояние между индекса (index = np.arange(0, n_groups * 2, 2)
), или уменьшите ширину бара до чего-то меньшего, скажем 0.2
.