图表的目的
plotnine与R的ggplot2几乎完全相同
组成
必须:ggplot(data,mapping)+geom_xxx()|stat_xxx()
可选:scale_xxx()+coord_xxx()+facet_xxx()+guides()+theme()
选好数据,mapping决定映射对象,geom决定映射方式,scale决定映射细节(如x,y范围,颜色深浅范围,大小范围),coord决定坐标轴选择(反转和转换等),facet决定分面,guides决定图例,theme决定整体主题
#选好数据,mapping决定映射对象,geom决定映射方式,scale决定映射细节(如x,y范围,颜色深浅范围,大小范围),coord决定坐标轴选择(反转和转换等),facet决定分面,guides决定图例,theme决定整体主题
#个性化映射时参数放aes里面,统一时放外面
import numpy as np
from plotnine import *
import pandas as pd
median_age_dict={
'Country': ['New Zealand','Spain','Ireland','Israel','Denmark','Norway','Netherlands','Australia','Italy','Sweden'],
'Age': [39.0, 37.0, 35.0, 31.0, 24.0, 54.0, 31.0, 38.0, 32.0, 34.0],
'income':[1000,1005,2000,900,5000,3000,1200,2300,3900,2100]
}
median_age=pd.DataFrame(median_age_dict)
#1、基本映射-geom
(
ggplot(median_age,aes(x='Country',y='Age',fill='Country'))+
geom_bar(stat='identity')+geom_text(aes(label='Age'))+
coord_flip()
)
#复杂参数调整
(ggplot(median_age,aes(x='Age',y='income'))+
geom_point(aes(fill='Age',size='income',shape='Country'))+geom_line(aes(color='Age',alpha='Age'))
)
#2、度量调整-scale
(ggplot(median_age)+geom_point(aes(x='Country',y='Age',size='Age'),color='red')+
scale_size(range=(1,8)))
#度量调整
(ggplot(median_age)+geom_point(aes(x='income',y='Age',size='Age'),color='red')+
scale_size(range=(1,8)))+scale_y_continuous(breaks=np.arange(20,50,2),limits=(20,50))
#3、坐标轴调整-coord_xxx
(
ggplot(median_age,aes(x='Country',y='Age',fill='Country'))+
geom_bar(stat='identity')+geom_text(aes(label='Age'))+
coord_flip()
)
#4、分面-facet
from plotnine import *
from plotnine.data import mpg
#根据变量按列排布
(ggplot(mpg,aes('cty','hwy',fill='fl'))+
geom_point(size=3,stroke=0.3,alpha=0.8,show_legend=False)+
facet_grid('.~fl'))
#根据变量按行排布
(ggplot(mpg,aes('cty','hwy',fill='fl'))+
geom_point(size=3,stroke=0.3,alpha=0.8,show_legend=False)+
facet_grid('year~.'))
#5、图例-guides 使用fill,size或其他取决于前面用了哪些映射,有哪些映射就有哪些图例
#guides(fill=guide_colorbar(...),size=guide_colorbar(...),)参数如下
#colour/fill = guide_colorbar()/guide_legend(), 连续型变量/离散型变量,
#size = guide_legend(),
#shape = guide_legend(),
#linetype = guide_legend(),
#alpha = guide_legend()
)
#每个参数使用为fill=guide_colorbar()调整连续变量图例 fill=guide_legend()调整离散变量图例
#其中guide_colorbar()里面参数主要为三类1、标题itle 2、文本label 3、箱体
(ggplot(median_age)+geom_point(aes(x='Country',y='Age',size='Age'),color='red')+
scale_size(range=(1,8))+guides(fill=guide_colorbar())
#6、主题-theme(参数可控制图例位置)
(ggplot(median_age)+geom_point(aes(x='Country',y='Age',size='Age'),color='red')+
scale_size(range=(1,8))+guides(fill=guide_colorbar())+
theme(legend_background=element_rect(fill='white'),legend_position='left'))