机器学习笔记 - 使用plotnine在python中实现ggplot

1、概述

        R编程语言的ggplot包让R在数据可视化方面更加丰富。在 python 中,也有各种包可用于数据可视化。如果 ggplot 的特性和功能可以在 python 中使用,它将在许多可视化特定任务中具有宝贵的优势。

        数据的可视化在大多数数据分析任务中起着至关重要的作用。R编程语言的ggplot包让R在数据可视化方面更加丰富。在 python 中,也有各种包可用于数据可视化。如果 ggplot 的特性和功能可以在 python 中使用,它将在许多可视化特定任务中具有宝贵的优势。我们将介绍如何在python中使用基于 ggplot2 的名为 plotnine 的包来可视化数据。

2、什么是ggplot?

        我们知道 ggplot 是 R 中用于数据可视化的包。这个包使得R成为数据可视化领域中最好的工具之一。这个包是由 Hadley Wickham 创建的,可以被认为是 Leland Wilkinson 建议的图形语法的实现。

        图形语法可以被认为是一种将图形分解为语义组件的方案。图形组件的示例可以是比例和层。Ggplot 变得更加有用,因为它能够创建时尚和清晰的图形。从普通用户到 R 语言的高端用户,他们都使用这个包进行可视化。
        在本文中,我们将使用 plotnine 包在 python 中实现 ggplot 包。

        python中有matplotlib、 plotly 、ggpy等几个python包用于可视化,但ggplot的能力也有待探索。将使用涵盖所有 ggplot 功能的 plotnine 包并将它们扩展到 python。

​        我们可以使用以下代码行安装 plotnine:

pip install 'plotnine[all]'

        安装后,我们就可以使用 ggplot 在 python 中可视化数据了。

3、示例1

from plotnine import *
from plotnine.data import mtcars

print(mtcars)

(1)绘制任意两个变量

plot = (ggplot(mtcars, aes('disp', 'mpg')) + geom_point())
print(plot)

(2)数据点的分解1

        在数据集中,我们已经看到我们有许多分类值,例如我们可以根据发动机使用的气缸数对数据进行分类。上面的图也可以通过以下方式根据气缸数使用颜色进行分解。

plot = (ggplot(mtcars, aes('disp', 'mpg', color='factor(cyl)')) + geom_point())
print(plot)

 (3)数据点的分解2

plot =(ggplot(mtcars, aes('disp', 'mpg', color='factor(cyl)'))
 + geom_point()
 + facet_wrap('~cyl'))
print(plot)

(4)数据点的分解3

        让数据点分解的更时尚。

4、示例2

import pandas as pd
data = pd.read_csv('https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/'+'titanic.csv')
print(data.head())

        让我们画一个图,根据他们的乘客等级,从泰坦尼克号数据中可以告诉我们有多少人幸存下来。

data['Survived'] = data['Survived'].astype('category')
plot = ggplot(aes(x="Pclass", fill="Survived"), data) + geom_bar(stat = 'count') + theme_xkcd()
print(plot)

         从图中,我们可以看到我们使用 ggplot 为泰坦尼克号数据制作的条形图。让我们制作一个图,可以告诉我们幸存者和未幸存者的平均年龄。

ggplot(data, aes(x='Survived', y='Age')) + geom_violin()

         从图中,我们可以看到,在数据中,幸存的人大多是 20 岁。让我们看一下基于性别的图表分类。

plot = ggplot(data, aes(x='Survived', y='Age')) + \
    geom_boxplot() + \
    facet_wrap(['Sex'])
print(plot)

plot = ggplot(data, aes(x='Survived', y='Age')) + \
    geom_boxplot() + \
    facet_wrap(['Sex','Pclass']) + theme_xkcd()
print(plot)

猜你喜欢

转载自blog.csdn.net/bashendixie5/article/details/125096040