Pandas Graph Bar и проблемы с линейным графиком

Я пытаюсь построить линейный график поверх гистограммы для анализа из фрейма данных. Каждый раз, когда я пытаюсь добавить линейный график, ось y справа выходит из строя, а заголовки гистограммы на оси x по какой-то причине меняются с правильного на алфавитный. Я хотел бы, чтобы ось y справа была в порядке, а линия была выпрямлена, если это возможно. Ниже приведен гистограммный график после добавления строки. Я пытаюсь нанести значение индекса на x, который является меткой города. , Город / город на левой оси Y и население на правой оси.

Сначала должен быть Белфаст, затем Лондондерри.

введите здесь описание изображения

Цените это, если кто-то может помочь.

x1= CitySample2017["index"]
y1= CitySample2017["Town/City"]



y2= CitySample2017["Population"]

ax1= CitySample2017.plot.bar(y="Town/City", x='index')

ax2 = ax1.twinx()

ax2.plot(x1, y2)

https://imgur.com/a/z4oSjWS


person Ryan E    schedule 16.11.2018    source источник
comment
Я думаю, вы хотели бы предоставить здесь минимальный воспроизводимый пример, чтобы люди могли воспроизвести проблему и предоставить решение исходя из этого.   -  person ImportanceOfBeingErnest    schedule 17.11.2018


Ответы (2)


Я не могу быть уверен, не видя ваших данных, но попробуйте запустить это вместо вашего кода:

ax1 = CitySample2017.plot.bar(x='index', y='Town/City')
ax2 = ax1.twinx()
CitySample2017.plot(x='index', y='Population', ax=ax2)
person Peter Leimbigler    schedule 17.11.2018
comment
Большое спасибо, это решило мою проблему. Знаете ли вы, как увеличить размер фигуры в топорных графиках? - person Ryan E; 17.11.2018

Вы используете matplotlib 2.1. Обновите до matplotlib 2.2 или выше, и код будет работать, как ожидалось.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"index" : ["Belfast", "London", "Twoabbey", "Lisboa", "Barra"],
                   "town" : [5000,1000,600,600,500],
                   "pop" : [12,14,16,18,20]})

ax1= df.plot.bar(y="town", x='index')

ax2 = ax1.twinx()

ax2.plot(df["index"], df["pop"])

plt.show()

введите здесь описание изображения

person ImportanceOfBeingErnest    schedule 17.11.2018