logo
Loading...

請問matplotlib.pyplot的 plt.bar() and seaborn的sns.barplot()的差異? - Cupoy

在Day 18的作業解答程式碼是用 plt.bar(), 需要先作 age_group分組(如下)。...

ml100

請問matplotlib.pyplot的 plt.bar() and seaborn的sns.barplot()的差異?

2020/07/01 下午 10:22
機器學習共學討論版
Yu-Shen Cheng
觀看數:8
回答數:2
收藏數:0
ml100

在Day 18的作業解答程式碼是用 plt.bar(), 需要先作 age_group分組(如下)。

=======================================

bin_cut = np.linspace(20,70, num=11)

app_train['YEARS_BIRTH_grp'] = pd.cut(app_train['YEARS_BIRTH'],bins=bin_cut)

app_train['YEARS_BIRTH_grp'].value_counts()

age_group = app_train.groupby('YEARS_BIRTH_grp').mean()

age_group.head

plt.figure(figsize=(8,8))

px = range(len(age_group.index))

py = age_group['TARGET']

plt.bar(px, py)

plt.xticks(range(len(age_group.index)), age_group.index, rotation= 75); plt.xlabel('Age group (years)'); plt.ylabel('Failure to Repay (%)')

plt.title('Failure to Repay by Age Group')

========================================

但用 sns.barplot(),不需要先作group分組(如下),一樣可得到相同的圖,請問這樣是不是比較快,還是這二種bar plot 畫法有什麼差異呢?

========================================

import seaborn as sns

plt.style.use('ggplot')

plt.figure(figsize=(8,8))

px = app_train['YEARS_BIRTH_grp']

py = app_train['TARGET']

sns.barplot(px, py)

plt.xticks(rotation = 75); plt.xlabel('Age groups (years)'); plt.ylabel('Failure to Repay (%)')

plt.title('Failure to Repay by Age Group')

回答列表

  • 2020/07/02 下午 10:49
    Jeffrey
    贊同數:0
    不贊同數:0
    留言數:0

    Matplotlib (靜態的套件)


    matplotlib的圖像都位於Figure物件中


    基礎的套件


    精典圖表(直方、分箱、…), 多重子圖表(subplot)


    其他圖型: 密度圖、等高線圖


    Seaborn (靜態的套件)


    可以搭配 Matplotlib建構更直觀的視覺化效果


    客製化圖表,進行統計數據可視化: 圖表風格與顏色主題 圖表的分面繪製


    所以 Seaborn 是可以針對統計數據使用

  • 2020/07/05 下午 06:58
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:0

    嗨,Yu-Shen Cheng


    就是兩個套件都有畫圖的方法,看你習慣就哪一個而已。


    如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃