Единственная проблема заключается в том, что ключи в ваших данных Barchart имеют тип string
.Кроме того, вы не предоставляете значения x для линейного графика, поэтому avg_values
отображается просто по его индексам.
Итак, если вы решите проблему с типом данных, этот код должен работать:
plt.figure(1, figsize=(10,10))
barchart = plt.bar(sum_values.keys(), sum_values.values(), color='red')
plt.twinx()
linechart = plt.plot(avg_values.keys(), avg_values.values(), color='blue')
Обратите внимание, что вам не нужно составлять списки на основе ключей или значений dict.
Однако, если по какой-либо причине вы не можете изменить тип данных sum_values.keys()
, вы можете привести тип к int inline команды barplot следующим образом:
barchart = plt.bar(list(map(int, sum_values.keys())), sum_values.values(), color='red')
(В случае объекта карты вам необходимо составить список его результатов)
Для просмотра только части общих значений x вы можете установить пределы оси xпосле вычисления общих значений x, таких как:
commonx = [a for a in avg_values.keys() if a in sum_values.keys()]
plt.xlim(min(commonx) - .5, max(commonx) + .5)