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

  该可视化显示了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的文字与静态温度环的交叉方式。

 

摘自:https://www.aaa-cg.com.cn/data/2710.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值