繪製我只是想知道我怎麼能在繪製這種圖表和數據的Seaborn:與Seaborn
data.csv:
1,2,3
2007,05,06
2007,05,06
2007,05,08
2007,05,08
2007,05,12
2007,05,15
2007,05,16
...
條形圖,我想繪製:
如果有人知道,我將不勝感激如何用Seaborn與我的數據來繪製這種條形圖。
繪製我只是想知道我怎麼能在繪製這種圖表和數據的Seaborn:與Seaborn
data.csv:
1,2,3
2007,05,06
2007,05,06
2007,05,08
2007,05,08
2007,05,12
2007,05,15
2007,05,16
...
條形圖,我想繪製:
如果有人知道,我將不勝感激如何用Seaborn與我的數據來繪製這種條形圖。
根據您提供的數據,無法創建繪圖,因此我製作了一個小樣本進行測試。這是很長的,因爲你需要操縱數據。主要想法是瞭解堆積條形圖是添加常規條形圖。
import pandas as pd
import io
import matplotlib.pyplot as plt
import seaborn as sns
# sample data - 3rd column ignored
data = """
year,month,count
2007,05,06
2007,05,06
2007,06,08
2007,06,08
2008,05,12
2008,05,15
2008,06,16
"""
# read data
df = pd.read_csv(io.StringIO(data), delimiter=',')
groups = df.groupby(['year','month'])
plot_data = groups.count() # obtain count of year and month multi-index
# additive barplot (May and June)
sns.barplot(x = plot_data.reset_index(level=1).index.unique(), y = plot_data.sum(axis=0, level=1)['count'], data=df , color = "red", ci=None)
# single bottom plot (in this case May only or "05")
bottom_plot = sns.barplot(x = plot_data.reset_index(level=1).index.unique(), y = plot_data.reorder_levels(['month','year']).loc[5]['count'], color = "#0000A3")
bottom_plot.set_ylabel("Count")
bottom_plot.set_xlabel("Year")
plt.show()
的過程可以增加至包括所有12個月,但我不知道一個單一的代碼,會做,沒有操縱數據。
隨着熊貓,你可以做一個stacked barplot用簡單:
df.plot.bar(stacked=True)
所以你只需要加載或先重塑你的數據有個爲列,在今年的指數:
import numpy as np
import pandas as pd
import io
import matplotlib.pyplot as plt
import seaborn as sns
# sample data - 3rd column ignored
data = """
1,2,3
2007,05,06
2007,05,06
2007,06,08
2007,06,08
2007,05,06
2007,05,06
2007,06,08
2007,06,08
2007,05,06
2007,05,06
2007,06,08
2007,06,08
2008,03,12
2008,09,15
2008,02,16
2008,04,12
2008,05,15
2008,06,16
2008,03,12
2008,08,15
2008,02,16
2008,09,12
2008,05,15
2008,06,16
"""
# read data
df = pd.read_csv(io.StringIO(data), delimiter=',',names= ['year','count','ignore'],header=0,index_col='year')
nyears = len(np.unique(df.index.values))
df['month']=np.tile(np.arange(1,13),nyears)
#df.drop('ignore',1)
df.pivot(columns='month',values='count').plot.bar(stacked=True)
plt.show()
只需使用內置的[pandas plotting](http://pandas.pydata.org/pandas-docs/stable/visualization.html#bar-plots) – mwaskom
你是在1 =年,2 =月, 3 =價值?或者他們都與時間有關,而你正在計數? – Leb
@Leb 1 =年份,2 =月份(3不是重要的,不包括在條形圖中),您可以看到該示例,其中一個基於月份,另一個基於年份。以月份爲例,我計算了1月份所有年份的範圍 – GeoCom