The line does not appear above the barcode.

I am trying to draw a line above the histogram.

Here is my dataframe:

       meh  fiches     ratio
2007  1412    1338  0.947592
2008  1356    1324  0.976401
2009  1394    1298  0.931133
2010  1352    1275  0.943047
2011  1398    1325  0.947783
2012  1261    1215  0.963521
2013  1144     845  0.738636
2014  1203    1167  0.970075
2015  1024    1004  0.980469
2016  1197    1180  0.985798

When I run these two lines, I get:

ax = graph[['meh', 'fiches']].plot(kind='bar', color=['#666666','#999999'])
graph[['ratio']].plot(kind='line',color='red', linestyle='-', secondary_y=True, ax=ax)

enter image description here

However, if I remove kind = 'bar', I get three lines, and if I change kind = 'line' for kind = 'bar', I get three bars ...

+4
source share
2 answers

The problem is that your bars are displayed in categories as long as your line is displayed on a continuous axis - so when the x-positions of your bars look like it's years, they are actually values ​​from 0 to 9. To get around of this, you can specify x values ​​when building relationships using ax.get_xticks():

import io

import pandas as pd
import matplotlib.pyplot as plt

data = io.StringIO('''       meh  fiches     ratio
2007  1412    1338  0.947592
2008  1356    1324  0.976401
2009  1394    1298  0.931133
2010  1352    1275  0.943047
2011  1398    1325  0.947783
2012  1261    1215  0.963521
2013  1144     845  0.738636
2014  1203    1167  0.970075
2015  1024    1004  0.980469
2016  1197    1180  0.985798''')

graph = pd.read_csv(data, sep='\s+')

ax = graph[['meh', 'fiches']].plot(kind='bar', color=['#666666','#999999'])
graph[['ratio']].plot(x=ax.get_xticks(), kind='line',color='red', linestyle='-', secondary_y=True, ax=ax)

plt.show()

It shows:

Bar chart

+4

x-. x, .

, , :

from io import StringIO
from matplotlib import pyplot
import pandas

df = pandas.read_table(StringIO("""\
year   meh  fiches     ratio
2007  1412    1338  0.947592
2008  1356    1324  0.976401
2009  1394    1298  0.931133
2010  1352    1275  0.943047
2011  1398    1325  0.947783
2012  1261    1215  0.963521
2013  1144     845  0.738636
2014  1203    1167  0.970075
2015  1024    1004  0.980469
2016  1197    1180  0.985798
"""), sep='\s+', dtype={'year': str}).set_index('year')

ax = df[['meh', 'fiches']].plot(kind='bar', color=['#666666','#999999'])
df[['ratio']].plot(kind='line',color='red', linestyle='-', secondary_y=True, ax=ax)

enter image description here

+4

Source: https://habr.com/ru/post/1696268/


All Articles