旗下产业: A产业/ A实习/ A计划
全国统一咨询热线:010-5367 2995
首页 > 热门文章 > 大数据分析 > 大数据分析Python生成气候温度螺旋模型
大数据分析Python生成气候温度螺旋模型
时间:2020-09-21来源:www.aaa-cg.com.cn点击量:作者:Sissi
时间:2020-09-21点击量:作者:Sissi




  该可视化显示了1850年至1900年平均温度的偏差。它在Twitter和Facebook上被转发了数百万次,甚至在里约奥运会开幕式上也显示了该版本的版本。可视化非常引人注目,因为它可以帮助观众了解变化的温度波动以及过去30年平均温度的总体急剧上升。您可以在Ed Hawkins的网站上详细了解这种可视化背后的动机。在大数据分析Python生成气候温度螺旋模型中,我们将逐步介绍如何在Python中重新创建动画效果。我们将专门处理pandas(用于表示和修改数据)和matplotlib(用于可视化数据)。如果您不熟悉matplotlib,我们建议您仔细阅读通过数据可视化课程探索数据可视化和讲故事。在大数据分析Python生成气候温度螺旋模型中,我们将使用以下库:
 

  1)Python 3.6

  2)pandas0.22

  3)Matplotlib 2.2.2
 

  数据清理
 

  基本数据由国外的数据发布,数据集可以直接下载
 

  在这里。Github上的openclimatedata存储库在此笔记本中包含一些有用的数据清理代码。您需要向下滚动到标题为Global Temperatures的部分。以下代码将文大数据分析Python生成气候温度螺旋模型件读取到pandas数据框中:

大数据分析Python生成气候温度螺旋模型
 

  然后,我们需要:
 

  1)将第一列拆分为month和year列

  2)重命名1列value

  3)选择并保存除第一列(0)以外的所有内容

大数据分析Python生成气候温度螺旋模型
大数据分析Python生成气候温度螺旋模型
 

  保留我们的数据
 

  tidy,让我们删除包含2018年数据的行(因为这是唯一包含3个月而非全部12个月数据的年份)。

大数据分析Python生成气候温度螺旋模型
 

  最后,让我们计算1850到1900年全球温度的平均值,然后从整个数据集中减去该值。为了简化此操作,我们将创建一个
 

  使用year和month列的multiindex:

大数据分析Python生成气候温度螺旋模型
 

  这样,我们只修改了
 

  value列(实际温度值)。最后,计算并减去1850至1900年的平均温度,然后将索引重新设置为以前的水平。

大数据分析Python生成气候温度螺旋模型
 

  直角坐标系与极坐标系
 

  重建Ed的GIF有几个关键阶段:
 

  1)学习如何绘制极坐标系

  2)转换数据以进行极地可视化

  3)定制情节的美学

  4)逐年逐步完成可视化并将图变成GIF
 

  我们将开始研究在
 

  极坐标系。您可能已经看到的大多数图(条形图,箱形图,散点图等)都位于笛卡尔坐标系中。在此系统中:
 

  1)x和y(和z)的范围可以从负无穷大到正无穷大(如果我们坚持实数)

  2)中心坐标为(0,0)

  3)我们可以认为这个系统是矩形的

大数据分析Python生成气候温度螺旋模型
 

  相反,极坐标系是圆形的,使用r和theta。所述r坐标规定了从中心的距离和范围可以从0到无穷大。所述theta坐标指定从原点的角度可以从0到2 * pI范围。

大数据分析Python生成气候温度螺旋模型
 

  要了解有关极坐标系统的更多信息,建议您深入以下链接:
 

  1)维基百科:极坐标系

  2)NRICH:极坐标简介
 

  为极坐标图准备数据
 

  首先,让我们了解一下如何在Ed Hawkins的原始气候螺旋图中绘制数据。一年的温度值几乎跨越了整个螺旋/圈。您会注意到该行从一月到十二月的跨度,但不再连接到一月。这只是GIF的1850帧:

大数据分析Python生成气候温度螺旋模型
 

  这意味着我们需要按年份对数据进行子集化,并使用以下坐标:
 

  1)r:给定月份的温度值,调整为不包含负值。

  a)Matplotlib支持绘制负值,但不支持您的思维方式。我们希望-0.1比0.1更靠近中心,这不是默认的matplotlib行为。

  b)我们还希望在绘图原点周围留一些空间,以将年份显示为文本。

  2)theta:生成12个等距角度值,范围从0到2 * pi。
 

  让我们深入研究如何在matplotlib中仅绘制1850年的数据,然后扩展到所有年份。如果您不熟悉在matplotlib中创建Figure和Axes对象,建议您使用
 

  数据可视化探索课程。要生成使用极坐标系统的matplotlib Axes对象,我们需要在创建projection参数"polar"时将其设置为。

大数据分析Python生成气候温度螺旋模型
 

  默认极坐标图如下所示:

大数据分析Python生成气候温度螺旋模型
 

  要调整数据以使其不包含负温度值,我们首先需要计算最小温度值:
 

大数据分析Python生成气候温度螺旋模型
 

  让我们添加
 

  1 所有温度值,因此它们将为正,但在原点周围仍有一些空间可显示文本:

大数据分析Python生成气候温度螺旋模型
 

  我们还生成从0到2 * pi的12个均匀间隔的值,并使用前12个作为theta值:

大数据分析Python生成气候温度螺旋模型
 

  要在极坐标投影上绘制数据,我们仍然使用
 

  Axes.plot()方法,但现在第一个值对应于theta值列表,第二个值对应于r值列表。

大数据分析Python生成气候温度螺旋模型
 

  这是这个情节的样子:

大数据分析Python生成气候温度螺旋模型
 

  调整美学
 

  为了使我们的情节接近埃德·霍金斯(Ed Hawkins),让我们调整一下美学。在笛卡尔坐标系上正常绘制时,我们习惯于使用其他大多数matplotlib方法。在内部,matplotlib考虑
 

  theta成为x和r成为y。为了了解这一点,我们可以使用以下命令隐藏两个轴的所有刻度标签:

大数据分析Python生成气候温度螺旋模型
 

  现在,让我们调整颜色。我们需要极坐标图中的背景颜色为黑色,而极坐标周围的颜色为灰色。实际上,我们使用了图像编辑工具来查找确切的黑色和灰色颜色值,如下所示
 

  十六进制值:
 

  1)灰色:#323331

  2)黑色:#000100
 

  我们可以用
 

  fig.set_facecolor()设置图的前景色和Axes.set_axis_bgcolor()背景色:

大数据分析Python生成气候温度螺旋模型
 

  接下来,让我们使用添加标题
 

  Axes.set_title():

大数据分析Python生成气候温度螺旋模型
 

  最后,让我们在中间添加文本,以指定要显示的当前年份。我们希望此文本是起源
 

  (0,0),我们希望文本为白色,大字体并水平居中对齐。

大数据分析Python生成气候温度螺旋模型
 

  这是该地块现在的样子(回想一下这只是1850年的情况)。

大数据分析Python生成气候温度螺旋模型
 

  绘制剩余年份
 

  要绘制剩余年份的螺旋线,我们需要重复数据集中所有年份以外的操作。我们应该在此处进行的一项调整是手动设置
 

  r(或y在matplotlib中)。这是因为matplotlib根据使用的数据自动缩放绘图的大小。因此,在最后一步中,我们观察到仅1850的数据显示在绘图区域的边缘。让我们计算整个数据集中的最大温度值,并添加大量的填充(以匹配Ed所做的操作)。

大数据分析Python生成气候温度螺旋模型
 

  我们可以使用以下方式手动设置y轴限制
 

  Axes.set_ylim()

大数据分析Python生成气候温度螺旋模型
 

  现在,我们可以使用for循环来生成其余数据。让我们省去暂时生成中心文本的代码(否则每年将在同一点生成文本,这将非常混乱):

大数据分析Python生成气候温度螺旋模型
 

  该图如下所示:

大数据分析Python生成气候温度螺旋模型
 

  自定义颜色
 

  现在,颜色感觉有些随意,与原始可视化效果很好地传达出的气候逐渐变热不符。在原始外观中,颜色从蓝色/紫色过渡到绿色,再过渡到黄色。这种配色方案被称为
 

  顺序颜色图,因为颜色的渐变反映了数据中的某些含义。虽然在matplotlib中创建散点图时很容易指定颜色图(使用cm来自的参数Axes.scatter(),但是在创建线图时没有直接参数来指定颜色图。Tony Yu撰写了一篇很棒的简短文章,介绍了如何在生成色图时使用颜色图散点图,我们将在这里使用。本质上,我们在调用方法时使用color(或c)参数Axes.plot()并从中绘制颜色,plt.cm.(index)这是我们使用色图的方式viridis:

大数据分析Python生成气候温度螺旋模型
 

  这将导致绘图具有从蓝色到绿色的连续颜色,但是要变为黄色,我们实际上可以将计数器变量乘以
 

  2:

大数据分析Python生成气候温度螺旋模型
 

  让我们重新格式化我们的代码以合并此顺序颜色图。

大数据分析Python生成气候温度螺旋模型
 

  结果图如下所示:

大数据分析Python生成气候温度螺旋模型
 

  添加温度环
 

  尽管我们现在所拥有的图很漂亮,但是查看者实际上根本无法理解基础数据。在可视化过程中的任何地方都没有指示底层温度值的迹象。原始可视化效果在0.0、1.5和2.0摄氏度下具有完整,均匀的环,以帮助解决此问题。因为我们添加了
 

  1对于每个温度值,在绘制这些均匀环时,我们也需要在此处做同样的事情。蓝色环原先为0.0摄氏度,因此我们需要在处生成一个环r=1。第一个红色环原为1.5,因此我们需要将其绘制为2.5。最后一个为2.0,因此必须为3.0。

大数据分析Python生成气候温度螺旋模型
 

  最后,我们可以添加指定环的温度值的文本。所有这些文本值中的所有3个均处于0.5 * pi角度,并且距离值不同:

大数据分析Python生成气候温度螺旋模型
大数据分析Python生成气候温度螺旋模型
 

  因为“ 0.5 C”的文本被数据遮盖了,所以我们可能要考虑为静态绘图版本隐藏它。
 

  生成GIF动画
 

  现在,我们准备从绘图中生成GIF动画。动画是一系列连续显示的图像。我们将使用
 

  matplotlib.animation.FuncAnimation功能来帮助我们。要利用此功能,我们需要编写以下代码:
 

  1)定义基本图的外观和属性

  2)使用新数据更新每帧之间的绘图
 

  调用时,我们将使用以下必需的参数
 

  FuncAnimation():
 

  1)fig:matplotlib Figure对象

  2)func:每帧之间调用的更新函数

  3)frames:帧数(我们希望每年一帧)

  4)interval:每帧显示的毫秒数(每秒有1000毫秒)
 

  此函数将返回一个
 

  matplotlib.animation.FuncAnimation对象,它具有一种save()可用于将动画写入GIF文件的方法。以下是一些基本代码,它们反映了我们将使用的工作流程:
 

大数据分析Python生成气候温度螺旋模型

 

  现在剩下的就是重新格式化我们之前的代码,并将其添加到上面的框架中。我们鼓励您自己执行此操作,以练习使用matplotlib进行编程。
 

  这是最终动画在较低分辨率下的样子(以减少加载时间)。
 

  下一步
 

  在大数据分析Python生成气候温度螺旋模型中,我们探讨了:
 

  1)如何在极坐标系上绘图

  2)如何在极坐标图中自定义文本

  3)如何通过内插多个图来生成GIF动画
 

  您将获得大部分方式来重建最初发布的出色的气候螺旋GIF Ed Hawkins。以下是我们没有探索的一些关键事项,但是我们强烈建议您自己进行:
 

  1)将月值添加到极坐标图的外缘

  2)创建动画时,将当前年份值添加到图的中心。

  2.1)如果尝试使用该FuncAcnimation()方法执行此操作,则会注意到年份值相互堆叠(而不是清除上一年的值并显示新的年份值)。

  3)在图的左下角和右下角添加文本签名。

  4)调整0.0 C,1.5 C和2.0 C的文字与静态温度环的交叉方式。



 

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可先就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可推荐就业!

©2007-2021/北京漫动者教育科技有限公司版权所有
备案号:京ICP备12034770号

老师想和你聊一聊

©2007-2021/ www.aaa-cg.com.cn 北京漫动者教育科技有限公司 备案号: 京ICP备12034770号 监督电话:010-53672995 邮箱:bjaaa@aaaedu.cc

京公网安备 11010802035704号