这种个性化可视化图也太可爱了吧!
寫在前面
在這篇文章中, 云朵君想介紹一個很酷的python手繪樣式可視化包——可愛的圖表?cutecharts。Cutecharts?非常適合為圖表提供更個性化的觸感。
Cutecharts?與常規(guī)的?Matplotlib?和?Seaborn?庫完全不同,它可以查看手工制作的圖表,并在將鼠標懸停在圖表上時向我們顯示值。Matplotlib?圖表中沒有懸停效果,這是可愛圖表的一個優(yōu)勢。與?seaborn?相比,在可愛圖表中創(chuàng)建圖表的時間要長一些,但代碼數(shù)量仍然比標準?matplotlib?庫少。
該包可用于生成以下類型的圖表。目前,該庫支持五種不同的圖表——條形圖、餅圖、雷達圖、散點圖和折線圖。
繪圖準備
安裝cutecharts
這是個python第三方庫,要創(chuàng)建此圖表,你需要安裝cutecharts庫。具體安裝方法與其他庫一樣。
pip?install?cutecharts導(dǎo)入庫
import?cutecharts.charts?as?ctc import?pandas?as?pd數(shù)據(jù)集
看看 TMBD 數(shù)據(jù)是什么樣子的?數(shù)據(jù)有 21 列。
df?=?pd.read_csv(r'tmdb-movies.csv') df.head(2)數(shù)據(jù)說明
TMBD 的數(shù)據(jù)取自?kaggle[1]。
Popularity流行度:?指定電影流行度的數(shù)字量
Budget預(yù)算:?電影制作的預(yù)算。
Revenue收入:?電影產(chǎn)生的全球收入。
Original Title原片名:?翻譯或改編前電影的片名。
Cast演員:?在電影中扮演角色的演員姓名
Homepage主頁:?指向電影主頁的鏈接。
Director導(dǎo)演:?導(dǎo)演電影的導(dǎo)演姓名
Title片名:?電影名稱。
Keywords關(guān)鍵字:?與電影相關(guān)的關(guān)鍵字或標簽。
Overview概述:?對電影的簡要描述。
Runtime運行時間:?以分鐘為單位的電影運行時間。
Genres類型:?電影的類型,劇情、動作、喜劇、驚悚等。
Production Company制作公司:?電影的制作公司。
Vote Count投票數(shù):?收到的票數(shù)。
Vote Average投票平均:?電影收到的平均評分。
日期時間
Release Date上映日期:?電影上映的日期。
Release Year發(fā)行年份:?電影發(fā)行的年份。
數(shù)據(jù)清洗
我們先清理數(shù)據(jù),然后我們會看到可愛的圖表。
將特征更改為正確的日期時間格式并將流行功能四舍五入到小數(shù)點后兩位,以獲得更多內(nèi)容。
df['release_date']?=?pd.to_datetime(df['release_date']) df['popularity']?=?round(df['popularity'],?2)刪除不必要的功能
df.drop(['imdb_id',?'homepage',?'budget_adj','revenue_adj'],axis=1,?inplace=True)用missing替換特征nan值
df['tagline'].fillna('missing',inplace=True) df['keywords'].fillna('missing',inplace=True) df['production_companies'].fillna('missing',inplace=True)? df['cast'].fillna('missing',inplace=True) df['director'].fillna('missing',inplace=True) df['genres'].fillna('missing',inplace=True) df['overview'].fillna('missing',inplace=True)從預(yù)算和收入中刪除等于 0 的值。
df.drop(df[(df['budget']==0)?&?(df['revenue']==0)].index,inplace=True)現(xiàn)在,數(shù)據(jù)是干凈的,我們現(xiàn)在可以進一步創(chuàng)建一些可愛的圖表。
cutecharts繪圖
cutecharts中使用的參數(shù)
分配你想要的圖表名稱,例如,你想要一個餅圖然后運行下面的代碼。
chart?=?ctc.Pie()設(shè)置我們需要width, height在參數(shù)中添加的圖表的標題、寬度和高度。
chart?=?ctc.Pie('Title',?width='600px',?height='300px')設(shè)置圖表選項,可以將使用set_options()函數(shù)。
chart.set_options()設(shè)置x和y標簽的標題,我們將使用x_label,?y_label傳入set_options()函數(shù)示例如下。
chart.set_options(x_label='X?Labels',y_label='Y?Labels')最后,我們將使用一個函數(shù)來顯示圖表render_notebook(),下面給出一個例子。
chart.render_notebook()cutecharts繪圖
繪制餅圖
將要制作的圖表是甜甜圈圖表。我們將看到發(fā)行量最高的電影的前 5 年。
df_year?=?df['release_year'].value_counts( ).reset_index().sort_values(by='index',ascending=False)[:5].rename(columns={'index':'release_year','release_year':'Count'}) chart?=?ctc.Pie('Top?5?years',?width='600px',?height='300px') chart.set_options(labels=list(df_year['release_year']),?inner_radius=0) chart.add_series(list(df_year['Count'])) chart.render_notebook()餅圖繪制圓環(huán)圖
我們將要制作的圖表是甜甜圈圖表。我們將看到發(fā)行量最高的電影的前 5 年。
df_year?=?df['release_year'].value_counts( ).reset_index().sort_values(by='index',?ascending=False)[:5].rename(columns={'index':'release_year','release_year':'Count'}) chart?=?ctc.Pie('Top?5?years',?width='600px',?height='300px') chart.set_options(labels=list(df_year['release_year']),?inner_radius=0.8) chart.add_series(list(df_year['Count'])) chart.render_notebook()圓環(huán)圖所有的特性都與我們在餅圖中使用的相同,只是inner_radius使用了一個額外的參數(shù);我們可以為甜甜圈圖的內(nèi)部半徑給出0到1之間的任何值。如果你看到默認的圖例將在左上角,你可以指定圖例的值,如?upLeft、upRight、downLeft、downRight。
下圖顯示了?upRight?和?downLeft?上的圖例。
甜甜圈圖繪制條形圖
該函數(shù)將拆分字符串并返回每個類型的計數(shù)。
def?count_genre(x): data_plot?=?df[x].str.cat(sep?=?'|')data?=?pd.Series(data_plot.split('|'))info?=?data.value_counts(ascending=False)return?info調(diào)用函數(shù)來計算每個類型的電影。
df_genre_movies?=?count_genre('genres') df_genre_movies?=?pd.DataFrame(df_genre_movies).reset_index().rename(columns={'index':'Drama',?0:'Count'})條形圖代碼
這里我們通過導(dǎo)入 faker 庫為不同的條使用顏色。
from?cutecharts.faker?import?Fakerchart?=?ctc.Bar('Top?Movie?Geners',?width='600px',?height='200px') chart.set_options(labels=list(df_genre_movies['Drama'][:7]), x_label='Drama', y_label='Count', colors=Faker.colors )chart.add_series('Geners',list(df_genre_movies['Count'][:7])) chart.render_notebook()條形圖這里我們在可以明確為條形設(shè)置不同顏色的地方添加了另一個參數(shù)顏色set_options()?。
chart?=?ctc.Bar('Top?Movie?Geners',?width='600px',?height='200px')chart.set_options(labels=list(df_genre_movies['Drama'][:7]), x_label='Drama', y_label='Count',colors=['#FFF1C9',?'#F7B7A3',?'#EA5F89',?'#9B3192',?'#57167E',?'#47B39C','#00529B'])chart.add_series('Geners',list(df_genre_movies['Count'][:7])) chart.render_notebook()不同顏色條形圖繪制折線圖
我們將計算多年來發(fā)行的電影數(shù)量,并僅繪制 20 年代的電影。
data?=?df.groupby('release_year').count()['id'].reset_index().tail(16)制作折線圖以找出 20 年代以來電影的影響。
chart?=?ctc.Line("Impact?of?Movie?over?the?years?of?20's",?width='700px',?height='200px') chart.set_options(labels=list(data['release_year']),x_label='Years',y_label='Count',) chart.add_series('Years',list(data['id'])) chart.render_notebook()折線圖多年來,電影發(fā)行量呈指數(shù)增長。
繪制散點圖
我們看看受歡迎程度與預(yù)算的關(guān)系,并找出預(yù)算是否大于電影的受歡迎程度。
chart?=?ctc.Scatter("Helps?to?gain?insights?like?if?movies?with?higher?budget?have?high?popularity",?width='700px',?height='200px') chart.set_options(x_label='Popularity',y_label='Budget',dot_size=1,colors=['#47B39C']) chart.add_series('Popularity?vs?Budget',?[(z[0],?z[1])?for?z?in?list(zip(df['popularity'],df['budget']))]) chart.render_notebook()散點圖繪制雷達圖
雷達圖也稱為蜘蛛圖,主要用于顯示多變量值。對于雷達圖,我們將獲取咖啡消費的虛擬數(shù)據(jù),其中特征為天、本周和上周。
data?=?{'Day':?['Mon',?'Tue',?'Wed',?'Thu',?'Fri',?'Sat',?'Sun'],'This?week':?[12,?10,?9,?9,?10,?3,?3],?'Last?week':?[15,?12,?8,?9,?11,?4,?3]} df_coffee?=?pd.DataFrame(data,?columns?=?['Day',?'This?week',?'Last?week'])我們看看本周和上周每天咖啡消費量的雷達圖。
chart?=?ctc.Radar('Cups?of?coffee?consumed?per?day') chart.set_options(labels=list(df_coffee['Day']),?is_show_legend=True,legend_pos='upRight'?) chart.add_series('This?Week',?list(df_coffee['This?week']))? chart.add_series('Last?Week',?list(df_coffee['Last?week'])) chart.render_notebook()雷達圖寫在最后
看到這里的小伙伴,相信你基本掌握了該可愛圖庫的使用了。我們看到了用 python 制作的驚人的手寫可愛圖表。這個包的一個不足是它只提供 5 個圖表。但也是我們常用的一些圖標。可以動手試試呢。
數(shù)據(jù)資料
[1]?
kaggle:?https://www.kaggle.com/kashishrastogi/eda-of-tmbd-dataset
END
各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)推薦閱讀
牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環(huán)和各種表達式(長文系列第②篇)
牛逼!Python函數(shù)和文件操作(長文系列第③篇)
牛逼!Python錯誤、異常和模塊(長文系列第④篇)
總結(jié)
以上是生活随笔為你收集整理的这种个性化可视化图也太可爱了吧!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 60 个神级 VS Code 插件!
- 下一篇: 互联网公司职级和薪资一览!