Составить несколько списков с разным размером рядом? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть 4 списка следующим образом:

x_name=[’01-2014’,’03-2014’,’05-2014’,’01-2015’,’03-2015’]
x_value=[3,5,1,5,7]

z_name==[’01-2014’,’03-2014’,’04-2014’,’07-2014’,’05-2014’,’01-   
        2015’,’02-2015’,’03-2015’]
z_value=[6,8,2,4,6,8,1,2]

Я хочу построить эти списки рядом, чтобы, если они имеют одинаковые имена в (x_name и z_name), их соответствующие значения(в x_value и z_value) должны быть нанесены рядом друг с другом, а имя в z_name, которое не находится в x_name (например, «04 -2014», «02 -2015» и т. д.), должнобыть назначен на 0 в сюжете.Я кодировал следующее:

bar_width = 0.75
opacity = 0.8
index = len(z_name)

fig, axs = plt.subplots()
rects0=axs.bar(z_name,  
       z_value,bar_width,alpha=opacity,color='red',label=key)

rects0=axs.bar(index + bar_width, x_value,  
       bar_width,alpha=opacity,color='g',label='true')

plt.xlabel(‘x and z names’)
plt.ylabel('x and z values')

Но что-то не так, и я не могу присвоить значение 0 тем, которые отсутствуют в x_name.Есть идеи?

1 Ответ

1 голос
/ 18 июня 2019

Вам необходимо сделать следующее:

  • Использовать правильные значения x для обеих гистограмм
  • Использовать режим align=edge и положительные и отрицательные значения ширины столбца для размещенияполоса рядом друг с другом
  • Используйте меньшую ширину полосы, чтобы избежать наложения полос

Я не знаю, почему вы использовали index = len(z_name)


import matplotlib.pyplot as plt

x_name=['01-2014','03-2014','05-2014','01-2015','03-2015']
x_value=[3,5,1,5,7]

z_name=['01-2014','03-2014','04-2014','07-2014','05-2014','01-2015','02-2015','03-2015']
z_value=[6,8,2,4,6,8,1,2]

bar_width = 0.25
opacity = 0.8
index = len(z_name)

fig, axs = plt.subplots()

rects0=axs.bar(z_name, z_value, bar_width, align='edge', alpha=opacity, color='r')
rects0=axs.bar(x_name, x_value, -bar_width, align='edge',alpha=opacity, color='g')

plt.xlabel('x and z names')
plt.ylabel('x and z values')
plt.xticks(rotation=30)

enter image description here

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