返回介绍

6.3 ggplot

发布于 2024-01-27 22:10:03 字数 2655 浏览 0 评论 0 收藏 0

ggplot 是一个 Python 绘图包,它基于 R 语言的 ggplot2 包和图形语法。ggplot 与其他绘图包的关键区别是它的语法将数据与实际绘图明确地分离开来。为了对数据进行可视化表示,ggplot 提供了几种基本元素:几何对象、图形属性和标度。除此之外,为了进行更高级的绘图,ggplot 还提供一些附加元素:统计变换、坐标系、子窗口和可视化主题。要想获得关于 ggplot 的详细信息,可以参考 Hadley Wickham 的著作《ggplot2:数据分析与图形艺术(第 2 版)》,也可以参考 Leland Wilkinson 的著作:Grammar of Graphics, 2nd Edition(Springer)。

Python 的 ggplot 库不像 R 语言的 ggplot2 库那样成熟,所以它不具备 ggplot2 的所有功能,也就是说,它没有那么多的几何对象、统计变换和标度,也没有坐标系、注释和增强功能。在与 ggplot 相关的包进行了升级与修改之后,使用 ggplot 也可能会遇到问题。例如,有一次我使用 ggplot 创建直方图时就遇到了问题,因为 pandas 中 pivot_table 方法的关键字 rows 和 cols 被去掉了,替换成了 index 和 columns。在网上搜索了解决方案之后,我发现应该将脚本 ggplot/stats/stat_bin.py 的某行代码中的“rows”修改为“index”,才能解决这个问题。

和本章中介绍的其他 Python 绘图包相比,ggplot 的缺点很明显,因此我推荐使用其他绘图包来创建统计图。但是,因为我是 R 语言 ggplot2 包的疯狂粉丝,所以在本节中我要介绍一下 ggplot。如果你精通 R 语言并且熟悉 ggplot2,那么马上就可以使用 ggplot 创建统计图,只要你的需求在它的功能范围内。

下面的脚本 ggplot_plots.py 演示了如何通过 ggplot 创建一些基础统计图,使用的数据就是 ggplot 包内部的数据:

#!/usr/bin/env python3
from ggplot import *
print(mtcars.head())
plt1 = ggplot(aes(x='mpg'), data=mtcars) +\
         geom_histogram(fill='darkblue', binwidth=2) +\
         xlim(10, 35) + ylim(0, 10) +\
         xlab("MPG") + ylab("Frequency") +\
         ggtitle("Histogram of MPG") +\
         theme_matplotlib()
print(plt1)
print(meat.head())
plt2 = ggplot(aes(x='date', y='beef'), data=meat) +\
         geom_line(color='purple', size=1.5, alpha=0.75) +\
         stat_smooth(colour='blue', size=2.0, span=0.15) +\
         xlab("Year") + ylab("Head of Cattle Slaughtered") +\
         ggtitle("Beef Consumption Over Time") +\
         theme_seaborn()
print(plt2)
print(diamonds.head())
plt3 = ggplot(diamonds, aes(x='carat', y='price', colour='cut')) +\
         geom_point(alpha=0.5) +\
         scale_color_gradient(low='#05D9F6', high='#5011D1') +\
         xlim(0, 6) + ylim(0, 20000) +\
         xlab("Carat") + ylab("Price") +\
         ggtitle("Diamond Price by Carat and Cut") +\
         theme_gray()
print(plt3)
ggsave(plt3, "ggplot_plots.png")

这 3 个统计图是使用 ggplot 包中的 3 个数据集 mtcars、meat 和 diamonds 创建的。在创建统计图之前,我在屏幕上打印出了每个数据集的头部(最前面的行),看一下变量名和初始数据值。

ggplot 函数将数据集名称和图形属性都看作参数,以此来设置图形中各种具体变量。ggplot 函数与 matplotlib 中的 figure 函数很像,都是先收集绘图信息,但并不实际显示各种图形元素,比如点、线、条形等。下一条绘图命令用于添加几何对象,即向图中添加数据的图形表示。脚本中的 3 个添加几何对象的命令分别向图中添加了直方图、线型图和散点图。其余绘图命令向每张统计图中添加标题、坐标轴范围和标签,以及整体布局和颜色主题。

图 6-7 显示了脚本创建的散点图。在 ggplot 文档中(http://ggplot.yhathq.com/docs/index.html),你可以学习到创建和设置统计图表的更多信息。

图 6-7:ggplot 生成的散点图

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文