日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

r语言ggplot2 多线图绘制图例_plotnine: Python版的ggplot2作图库

發布時間:2023/12/1 python 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 r语言ggplot2 多线图绘制图例_plotnine: Python版的ggplot2作图库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

騰訊課堂 | Python網絡爬蟲與文本數據分析

同樣的基本作圖任務,plotnine比matplotlib和seaborn代碼量少,更美觀。所以我又重新發一遍,大家可以先收藏起來,后面總有用到的時候~

R語言的ggplot2繪圖能力超強,python雖有matplotlib,但是語法臃腫,使用復雜,入門極難,seaborn的出現稍微改善了matplotlib代碼量問題,但是定制化程度依然需要借助matplotlib,使用難度依然很大。

而且咱們經管專業學編程語言,一直有一個經久不衰的問題-“學數據分析,到底選擇R還是Python”。通過plotnine這個庫,你就可以在python世界中體驗下R語言的新奇感,體驗可視化之美,如果著迷上癮,再學R也不遲。

plotnine包,可以實現絕大多數ggplot2的繪圖功能,兩者語法十分相似,R和Python的語法轉換成本大大降低。

  • plotnine文檔 https://plotnine.readthedocs.io/en/latest/
  • R語言ggplot2文檔 https://ggplot2.tidyverse.org/reference/index.html

安裝

pip?install?plotnine

準備數據

from?plotnine.data?import?mpg

#dataframe
mpg.head()
manufacturermodeldisplyearcyltransdrvctyhwyflclass01234
audia41.819994auto(l5)f1829pcompact
audia41.819994manual(m5)f2129pcompact
audia42.020084manual(m6)f2031pcompact
audia42.020084auto(av)f2130pcompact
audia42.819996auto(l5)f1626pcompact

快速作圖qplot

我們先直接看最簡單好用的快速作圖函數qplot(x, y, data)

  • 橫坐標displ
  • 縱坐標cty
  • 數據mpg
from?plotnine?import?qplot

qplot(x='displ',?
??????y='cty',
??????data=mpg)


ggplot圖層

qplot是快速作圖函數,如果想讓圖更好看,進行私人訂制,那么我們需要進行圖層設計

首先設置ggplot圖層(相當于買了一個高級畫布),

  • 數據mpg
  • 橫坐標x軸為displ
  • 縱坐標y軸cty

在plotnine中,變量所對應的數據均可通過字段名調用

from?plotnine?import?ggplot,?geom_point,?aes

ggplot(aes(x='displ',?y='cty'),?mpg)


圖層疊加

我們可以看到,已經繪制出一個空的ggplot圖層,x軸為displ,y軸為cty。

接下來我們給這個圖層上加上數據對應的散點,使用geom_point()直接追加在ggplot圖層之上即可。

(
????ggplot(aes(x='displ',?y='cty'),?mpg)
????+?geom_point()
)


color

在上圖中,散點是沒有區分每輛車的氣缸數cyl。

在geom_point()中,我們可以按照氣缸數cyl分門別類,按照顏色顯示出來

(
????ggplot(aes(x='displ',?y='cty'),?mpg)
????+?geom_point(aes(color='cyl'))
)


上圖挺好看的,有時候需要繪制的字段是離散型數值,但是上色后可能不夠明顯,需要聲明該字段為離散型。這時候用factor()來告訴plotnine,這個字段是離散型數值

(
????ggplot(aes(x='displ',?y='cty'),?mpg)
????+?geom_point(aes(color='factor(cyl)'))?
)



size

有時候為了增加可視化顯示的維度數,還可以考慮加入點的大小size

(
????ggplot(aes(x='displ',?y='cty'),?mpg)
????+?geom_point(aes(size='hwy'))
)



梯度色

如果你想自己設置顏色的梯度,可以通過scale_color_gradient設置

from?plotnine?import?scale_color_gradient

(
????ggplot(aes(x='displ',?y='cty'),?mpg)
????+?geom_point(aes(color='hwy'))
????+?scale_color_gradient(low='blue',?high='red')
)


條形圖

plotnine中可繪制的圖有很多,剛剛已經講了散點圖,接下來我們看看plotnine中的條形圖。

首先準備一下數據

import?pandas?as?pd

df?=?pd.DataFrame({
????'variable':?['gender',?'gender',?'age',?'age',?'age',?'income',?'income',?'income',?'income'],
????'category':?['Female',?'Male',?'1-24',?'25-54',?'55+',?'Lo',?'Lo-Med',?'Med',?'High'],
????'value':?[60,?40,?50,?30,?20,?10,?25,?25,?40],
})
df['variable']?=?pd.Categorical(df['variable'],?categories=['gender',?'age',?'income'])
df['category']?=?pd.Categorical(df['category'],?categories=df['category'])

df
variablecategoryvalue012345678
genderFemale60
genderMale40
age1-2450
age25-5430
age55+20
incomeLo10
incomeLo-Med25
incomeMed25
incomeHigh40
from?plotnine?import?ggplot,?aes,?geom_text,?position_dodge,?geom_point

#調整文本位置
dodge_text?=?position_dodge(width=0.9)??????????????????????????????#?new

(
????ggplot(df,?aes(x='variable',?
???????????????????y='value',?
???????????????????fill='category'))?#類別填充顏色
????+?geom_col(position='dodge',?
???????????????show_legend=False)???#?modified
????+?geom_text(aes(y=-.5,?label='category'),??????????????????????????#?new
????????????????position=dodge_text,
????????????????color='gray',??#文本顏色
????????????????size=8,???#字號
????????????????angle=30,?#文本的角度
????????????????va='top')
????
?+?lims(y=(-5,?60))?????????????????????????????????????????????????#?new
)


from?plotnine.data?import?economics_long

economics_long.head()
datevariablevaluevalue0101234
1967-07-01pce507.40.000000
1967-08-01pce510.50.000266
1967-09-01pce516.30.000764
1967-10-01pce512.90.000472
1967-11-01pce518.10.000918
from?plotnine?import?ggplot,?aes,?geom_line

(
????ggplot(economics_long,?aes(x='date',?y='value01',?color='variable'))
????+?geom_line()
)


plotnine目前已經支持絕大多數ggplot2,但是文檔方面沒有ggplot2全,所以學習plotnine時可以參考ggplot2。

  • plotnine文檔 https://plotnine.readthedocs.io/en/latest/
  • R語言ggplot2文檔 https://ggplot2.tidyverse.org/reference/index.html

往期文章

[更新] Python網絡爬蟲與文本數據分析?rpy2庫 | 在jupyter中調用R語言代碼plydata庫 | 數據操作管道操作符>>tidytext | 耳目一新的R-style文本分析庫七夕禮物 | 全網最火的釘子繞線圖制作教程讀完本文你就了解什么是文本分析文本分析在經管領域中的應用概述??綜述:文本分析在市場營銷研究中的應用plotnine: Python版的ggplot2作圖庫小案例: Pandas的apply方法??stylecloud:簡潔易用的詞云庫?用Python繪制近20年地方財政收入變遷史視頻??Wow~70G上市公司定期報告數據集漂亮~pandas可以無縫銜接Bokeh??YelpDaset: 酒店管理類數據集10+G??

公眾號后臺回復關鍵詞【plotnine入門】即可下載本文數據代碼

分享”和“在看”是更好的支持!

總結

以上是生活随笔為你收集整理的r语言ggplot2 多线图绘制图例_plotnine: Python版的ggplot2作图库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。