代码详解:如何用Python快速制作美观、炫酷且有深度的图表

本文详细介绍了如何利用Python的Pandas、Seaborn和Plotly库创建从简单到复杂的图表,包括基本绘图、高级美化和交互式体验,帮助读者提升数据可视化技巧。
摘要由CSDN通过智能技术生成

全文共 12231字,预计学习时长 35分钟
生活阶梯(幸福指数)与人均GDP(金钱)正相关的正则图
 
本文将探讨三种用Python可视化数据的不同方法。 以可视化 《2019年世界幸福报告》 的数据为例,本文用Gapminder和Wikipedia的信息丰富了《世界幸福报告》数据,以探索新的数据关系和可视化方法。
 
《世界幸福报告》试图回答世界范围内影响幸福的因素。
 
报告根据对“坎特里尔阶梯问题”的回答来确定幸福指数,被调查者需对自己的生活状况进行打分,10分为最佳状态,0分为最差。
 
本文将使用Life Ladder作为目标变量。 Life Ladder就是指幸福指数。
 
文章结构

  图片来源:Nik MacMillan/Unsplash
 
本文旨在提供代码指南和参考点,以便在查找特定类型的图表时进行参考。 为了节省空间,有时会将多个图表合并到一张图上。 但是请放心,你可以在这个 Repo 或相应的 Jupyter  Notebook中找到所有基本代码。
 
目录
·     我使用 Python 进行绘图的经历
·      分布的重要性
·      加载数据和包导入
·      迅速: 使用Pandas 进行基本绘图
·      美观: 使用Seaborn 进行高级绘图
·      精彩: 用plotly创造精彩的互动情节
 

1. 我使用Python进行绘图的经历

 图片来源:Krys Amon/Unsplash
 
大约两年前,我开始更认真地学习Python。 从那时起,Python几乎每周都会给我一些惊喜,它不仅自身简单易用,而且其生态系统中还有很多令人惊叹的开源库。 我对命令、模式和概念越熟悉,就越能充分利用其功能。
 
Matplotlib
 
与用Python绘图正好相反。 最初,我用matplotlib创建的几乎每个图表看起来都很过时。 更糟糕的是,为了创建这些讨厌的东西,我不得不在Stackoverflow上花费数小时。 例如,研究改变x斜度的基本命令或者类似这些的蠢事。 我一点也不想做多图表。 以编程的方式创建这些图表是非常奇妙的,例如,一次生成50个不同变量的图表,结果令人印象深刻。 然而,其中涉及大量的工作,需要记住一大堆无用的指令。
 
Seaborn
 
学习 Seaborn 能够节省很多精力。 Seaborn可以抽象出大量的微调。 毫无疑问,这使得图表在美观上得到巨大的改善。 然而,它也是构建在matplotlib之上的。 通常,对于非标准的调整,仍然有必要使用机器级的matplotlib代码。
 
Bokeh
 
一时间,我以为 Bokeh 会成为一个后援解决方案。 我在做地理空间可视化的时候发现了Bokeh。 然而,我很快就意识到,虽然Bokeh有所不同,但还是和matplotlib一样复杂。
 
Plotly
 
不久前我确实尝试过  plot.ly  (后面就直接用plotly来表示)同样用于地理空间可视化。 那个时候,plotly比前面提到的库还要麻烦。 它必须通过笔记本账户登录,然后plotly可以在线呈现,接着下载最终图表。 我很快就放弃了。 但是,我最近看到了一个关于plotlyexpress和plotly4.0的 Youtube视 频,重点是,他们把那些在线的废话都删掉了。 我尝试了一下,本篇文章就是尝试的成果。 我想,知道得晚总比不知道的好。
 
Kepler.gl (地理空间数据优秀奖)
 
Kepler.gl 不是一个Python库,而是一款强大的基于web的地理空间数据可视化工具。 只需要CSV文件,就可以使用Python轻松地创建文件。 试试吧!
 
当前工作流程
 
最后,我决定使用Pandas本地绘图进行快速检查,并使用Seaborn绘制要在报告和演示中使用的图表(视觉效果很重要)。
 

2. 分布的重要性

 图片来源:Jonny Caspari/Unsplash
 
我在圣地亚哥从事研究期间,负责教授统计学(Stats119)。 Stats119是统计学的入门课程,包括统计的基础知识,如数据聚合(可视化和定量)、概率的概念、回归、抽样、以及最重要的分布。 这一次,我对数量和现象的理解几乎完全转变为基于分布的理解(大多数时候是高斯分布)。
 
直到今天,我仍然惊讶于这两个量的作用,标准差能帮助人理解现象。 只要知道这两个量,就可以直接得出具体结果的概率,用户马上就知道大部分的结果的分布情况。 它提供了一个参考框架,无需进行过于复杂的计算,就可以快速找出有统计意义的事件。
 
一般来说,面对新数据时,我的第一步是尝试可视化其分布,以便更好地理解数据。
 

3. 加载数据和包导入

图片来源:Kelli Tungay/Unsplash
 
先加载本文使用的数据。 我已经对数据进行了预处理。 并对它的意义进行了探究和推断。
 

    
    
    
# Loadthe data data = pd.read_csv('https://raw.githubusercontent.com/FBosler/AdvancedPlotting/master/combined_set.csv')#this assigns labels per year data['Mean Log GDP per capita'] =data.groupby('Year')['Log GDP per capita'].transform( pd.qcut, q=5, labels=(['Lowest','Low','Medium','High','Highest']) )
 
数据集包含以下值:
 
·     年份: 计量年(2007 -2018)
·     生活阶梯: 受访者根据坎特里尔阶梯(CantrilLadder),用0~10分(最满意的为10分)来衡量他们今天的生活
·     人均GDP: 根据世界银行2018年11月14日发布的《世界发展指标》(WDI),将人均GDP调整为PPP(2011年不变价国际元)
·     社会支持: 对下面问题的回答: “遇到困难时,是否可以随时获得亲戚或朋友的帮助? ”
·     出生时预期健康寿命: 出生时预期健康寿命是根据世界卫生组织(WHO)全球卫生观察站(GHO)数据库构建的,数据分别来自2005年、2010年、2015年和2016年。
·     自由选择权: 回答下面这个问题: “你是否对自己生活的选择自由感到满意? ”
·     慷慨: 对“过去一个月是否给慈善机构捐过款?”与人均GDP相比
·     政治清廉: 回答“腐败现象在政府中是否普遍? ”“腐败在企业内部是否普遍? ”
·     积极影响: 包括前一天快乐、欢笑和享受的平均频率。
·     负面影响: 包括前一天焦虑、悲伤和愤怒的平均频率。
·     对国家政府的信心: 不言自明
·     民主质量: 一个国家的民主程度
·     执行质量: 一个国家的政策执行情况
·     Gapminder预期寿命: Gapminder的预期寿命
·     Gapminder人口: 国家人口
 
导入


    
    
    
import plotly import pandas as pd import numpy as np import seaborn as sns import plotly.express as pximport matplotlib%matplotlib inlineassertmatplotlib.__version__ == "3.1.0",""" Please install matplotlib version 3.1.0 by running: 1) !pip uninstall matplotlib 2) !pip install matplotlib==3.1.0 """

4. 迅速:使用Pandas进行基本绘图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值