当前位置: 首页 > 工具软件 > plotnine > 使用案例 >

python-plotnine库基本使用

韦嘉颖
2023-12-01

图表的目的

  • 类别比较(柱形图、条形图)
  • 数据关系(散点图、曲线图)
  • 数据分布(密度图、直方图、箱形图)
  • 时间序列
  • 局部整体(扇形图、树状图)

plotnine库

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'))
 类似资料: