热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pythonggplot画等值线图,plotnine:Python版的ggplot2作图库

R语言的ggplot2绘图能力超强,python虽有matplotlib,但是语法臃肿,使用复杂,入门极难,s

R语言的ggplot2绘图能力超强,python虽有matplotlib,但是语法臃肿,使用复杂,入门极难,seaborn的出现稍微改善了matplotlib代码量问题,但是定制化程度依然需要借助matplotlib,使用难度依然很大。

而且咱们经管专业学编程语言,一直有一个经久不衰的问题-“学数据分析,到底选择R还是Python”。通过plotnine这个库,你就可以在python世界中体验下R语言的新奇感,体验可视化之美,如果着迷上瘾,再学R也不迟。

plotnine包,可以实现绝大多数ggplot2的绘图功能,两者语法十分相似,R和Python的语法转换成本大大降低。

pip install plotnine

**准备数据**

from plotnine.data import mpg

#dataframe

mpg.head()

![](https://s4.51cto.com/images/blog/202012/30/f0af3e132c908cf373a2ae14fbe4d691.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

**快速作图qplot**

我们先直接看最简单好用的快速作图函数qplot(x, y, data)

* 横坐标displ

* 纵坐标cty

* 数据mpg

*

from plotnine import qplot

qplot(x='displ',

y='cty',

data=mpg)

![](https://s4.51cto.com/images/blog/202012/30/bdb79162e800e4ed138fd3e806b98a21.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

**ggplot图层**

qplot是快速作图函数,如果想让图更好看,进行私人订制,那么我们需要进行图层设计

首先设置ggplot图层(相当于买了一个高级画布),

* 数据mpg

* 横坐标x轴为displ

* 纵坐标y轴cty

在plotnine中,变量所对应的数据均可通过字段名调用

from plotnine import ggplot, geom_point, aes

ggplot(aes(x='displ', y='cty'), mpg)

![](https://s4.51cto.com/images/blog/202012/30/d1490a014e2c0caf5a39f4a6d612964b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

**图层叠加**

我们可以看到,已经绘制出一个空的ggplot图层,x轴为displ,y轴为cty。

接下来我们给这个图层上加上数据对应的散点,使用geom_point()直接追加在ggplot图层之上即可。

(

ggplot(aes(x='displ', y='cty'), mpg)

geom_point()

)

![](https://s4.51cto.com/images/blog/202012/30/8eca9dbd92b74953cc4dcc5dcb221dde.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

**color**

在上图中,散点是没有区分每辆车的气缸数cyl。

在geom_point()中,我们可以按照气缸数cyl分门别类,按照颜色显示出来

(

ggplot(aes(x='displ', y='cty'), mpg)

geom_point(aes(color='cyl'))

)

图片

上图挺好看的,有时候需要绘制的字段是离散型数值,但是上色后可能不够明显,需要声明该字段为离散型。这时候用factor()来告诉plotnine,这个字段是离散型数值

(

ggplot(aes(x='displ', y='cty'), mpg)

geom_point(aes(color='factor(cyl)'))

)

5b3b9783c02ab785c65496e32404cd67.png

size

有时候为了增加可视化显示的维度数,还可以考虑加入点的大小size

(

ggplot(aes(x='displ', y='cty'), mpg)

+ geom_point(aes(size='hwy'))

)

7a0fcdc5c0c010fc7673ec3fa15db6ee.png

梯度色

如果你想自己设置颜色的梯度,可以通过scale_color_gradient设置

from plotnine import scale_color_gradient

(

ggplot(aes(x='displ', y='cty'), mpg)

+ geom_point(aes(color='hwy'))

+ scale_color_gradient(low='blue', high='red')

)

164a73aba67cde8379229b1d75aa35df.png

条形图

plotnine中可绘制的图有很多,刚刚已经讲了散点图,接下来我们看看plotnine中的条形图。

首先准备一下数据

import pandas as pd

df = pd.DataFrame({

'variable': ['gender', 'gender', 'age', 'age', 'age', 'income', 'income', 'income', 'income'],

'category': ['Female', 'Male', '1-24', '25-54', '55+', 'Lo', 'Lo-Med', 'Med', 'High'],

'value': [60, 40, 50, 30, 20, 10, 25, 25, 40],

})

df['variable'] = pd.Categorical(df['variable'], categories=['gender', 'age', 'income'])

df['category'] = pd.Categorical(df['category'], categories=df['category'])

df

44868c12718715ccc8d49c5cb2f52384.png

#调整文本位置

dodge_text = position_dodge(width=0.9) # new

(

ggplot(df, aes(x='variable',

y='value',

fill='category')) #类别填充颜色

+ geom_col(position='dodge',

show_legend=False) # modified

+ geom_text(aes(y=-.5, label='category'), # new

position=dodge_text,

color='gray', #文本颜色

size=8, #字号

angle=30, #文本的角度

va='top')

+ lims(y=(-5, 60)) # new

)

babb3f17d0dd09a9aff54ca45c5c5ecc.png

from plotnine.data import economics_long

economics_long.head()

a26cbbea888d878c804626022074a20b.png

from plotnine import ggplot, aes, geom_line

(

ggplot(economics_long, aes(x='date', y='value01', color='variable'))

+ geom_line()

)

96f30792018eb9b4ca34e4795d972821.png

plotnine目前已经支持绝大多数ggplot2,但是文档方面没有ggplot2全,所以学习plotnine时可以参考ggplot2。



推荐阅读
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
author-avatar
JUN-围脖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有