2016-12-23 13 views
0

私はこのコードを持っています。このコードは、datetimeに基づいた値の数を数えます。 プロット中にパンダが最初の行を省略します

Plot result:

 station humidity 
datetime     
1   15101  15101 
2   11171  11171 
3   12057  12057 
4   13031  13031 
5   19835  19835 
6   17421  17421 
7   18145  18145 
8   17980  17980 
9   21347  21347 
10   22050  22050 
11   22265  22265 
12   11279  1127>> >9 
私は、同じことをしている、唯一の時間のために非常によく似たコードを持っており、それが動作:データフレームは、12行を持っているものの

# -*- coding: utf-8 -*- 
""" 
Created on Mon Nov 28 13:31:33 2016 

@author: ... 
""" 
import sys 
reload(sys) 
sys.setdefaultencoding('utf8') 

import pandas as pd 
import matplotlib.pyplot as plt 

"""read and count""" 
df = pd.read_csv('meteo_merged.csv', parse_dates=[1]) 
df['datetime'] = df.datetime.apply(lambda x: x.month) 

x = df.groupby(['datetime']).count() 
df2 = pd.read_csv('policja.csv', parse_dates=[1]) 
df2['datetime'] = df2.datetime.apply(lambda x: x.month) 
p = df2.groupby('datetime').count() 

"""plot""" 
ax = x.plot(y='station', kind='bar', legend=False) 
ax2 = p.plot(ax=ax, color='g', secondary_y=True, legend=False, rot=60, figsize=(8,6)) 
ax2.lines[0].set_linewidth(3) 

"""axes labels etc.""" 
godziny = ['styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień'] 
ax.set_xticklabels(godziny) 
ax.set_ylabel('Liczba dni z ograniczoną widocznością dla danego miesiąca').set_color('blue') 
ax2.set_ylabel('Liczba zdarzeń drogowych w danym miesiącu').set_color('green') 
ax.set_xlabel('Miesi\xc4\x84c') 

"""ticks settings""" 
ax.spines['left'].set_color('blue') 
ax.spines['right'].set_color('green') 
ax.tick_params(axis='y', colors='blue') 
ax2.tick_params(axis='y', colors='green') 

fig = plt.gcf() 
fig.savefig('mgla_miesiace.svg', format='svg', dpi=300) 

X軸は、第二の月から始まりますすべての行がプロットされています。唯一の違いは次のような行です:

df['datetime'] = df.datetime.apply(lambda x: x.hour) 

ここで問題があるとは思われません。また、コーディングに問題があるようです。私が試しても、±、ę、óなどの文字をプロットすることはできません。

答えて

0

フォントの問題では、matplotlibに別のフォントを使用させることで修正できます。 Ubuntuを使用している場合、それはあなたがプロットにしたい文字をサポートするようたとえば、解放セリフ、あなたがいる限り希望によってどのフォントことを変更することができます。もちろん、

matplotlib.rc('font', family='Liberation Serif') 

を試みることができます。

月の問題では、plt.axisで軸を拡大しようとしましたか?

+0

コメントには、代わりに – GurV

+0

の質問をする必要があります。plt.xlim([0,12])を追加すると、12本のバーが表示されますが、プロットは置き換えられます。両方のデータフレームの値は互いに対応していません。セカンダリyなしでオリジナルの棒グラフのみをプロットすると、期待される結果が得られます。データが欠落しません。 – Dreamscape

関連する問題