数据可视化 | Pandas vs Plotnine

时间:2022-07-26
本文章向大家介绍数据可视化 | Pandas vs Plotnine,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
作者:大邓

来源:大邓和他的Python

使用Pandas和plotnine可视化数据

目标:

  • 学会使用pandas内置的作图功能
  • 使用pands作散点图和直方图?
  • 使用plotnine定制一个画布
  • 从dataframe数据中构建复杂的定制化图表
  • 导出作图结果

之前分享过很多pandas可视化、plotnine可视化,

使用pandas做数据可视化

plotnine: Python版的ggplot2作图库

但是两者对比的还没有,今天我们尝试分别用pandas和plotnine作直方图、散点图。

导入数据

%matplotlib inline
import pandas as pd
import warnings
warnings.filterwarnings('ignore')

ecoli = pd.read_csv('ecoli.csv')
ecoli.head()

直方图

pandas直方图

ecoli['genome_size'].plot.hist()

#带标题
ecoli['genome_size'].plot.hist(title='Histogram with pandas')

plotnine直方图

from plotnine import ggplot, aes, geom_histogram

(ggplot(data=ecoli, #dataframe数据
        mapping=aes(x='genome_size'))  #需要统计的x轴
 + geom_histogram(bins=15) #直方图分为15个区间
)

from plotnine import ggplot, aes, geom_histogram, labs

(ggplot(data=ecoli,
        mapping=aes(x='genome_size'))
 + geom_histogram(bins=15)  
 + labs(title='Histogram with Plotnine') 

)

散点图

pandas散点图

ecoli.plot.scatter(x='generation',y='genome_size')

#带标题、点的颜色、点的形状marker
ecoli.plot.scatter(x='generation',y='genome_size', 
                   title='Scater plot with pandas', c='green', marker='+')

plotnine散点图

from plotnine import ggplot, aes, geom_point, labs

(ggplot(data=ecoli,
        mapping=aes(x = 'sample', y= 'genome_size'))
 + geom_point(alpha=0.5, color='blue') #散点图
 + labs(title='scatter plot with plotnine')
)

from plotnine import ggplot, aes, geom_point, labs, theme, element_text

(ggplot(data=ecoli,
        mapping=aes(x = 'sample', y= 'genome_size'))
 + geom_point(alpha=0.5, color='blue') #透明度alpha
 + labs(title='scatter plot with plotnine')
 + theme(axis_text_x=element_text(angle=45, hjust=1)) #设置x轴的文本角度和水平居中程度
)

from plotnine import ggplot, aes, geom_point, labs, theme, element_text

#除x、y轴,增加一个颜色维度
(ggplot(data=ecoli,
           mapping=aes(x = 'sample', y= 'genome_size', color='generation'))
 + geom_point(alpha=0.5)
 + labs(title='scatter plot with plotnine')
 + theme(axis_text_x = element_text(angle=45, hjust=1))
)