R语言天气可视化应用

R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。

R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。

要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。

关于作者:

  • 张丹(Conan), 程序员Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/r-app-china-weather/

r-app-chinaweather

前言

在很多人看来,R语言还只是个玩具,完全不具备企业级应用的能力。说这些话的人,根本就不了解R语言,更不清楚如何做企业级应用开发。从我最早接触R语言时,就把R做为可视化引擎嵌入到了晒粉丝的微博应用中;后来又开发了数据挖掘算法竞赛网站,并把R语言做为算法引擎,并支持在线编程及运行;我做的第三个R语言应用就是本文要给大家分享的每日中国天气微博应用,这次同样是把R做为可视化引擎,并让R完成爬虫、XML文档解析及数据处理等的任务;当然,我还实现了第四个、第五个、第六个以R为核心的应用,都是量化投资方面的,会在下一本书《R的极客理想-量化投资篇》再介绍给大家。

从我的使用经验来看,R语言已经具备了企业级应用的能力,但我并不是要用R语言完成所有编程任务。在我的项目环境中,大都是多种编程语言配合使用的,只有发挥各自语言的特性优势,才是未来的发展方向。

本文所介绍的每日中国天气微博应用开发,将分为3篇介绍R语言和PHP语言的混合编程,第一篇为R语言功能实现,第二篇为R包开发,第三篇为用PHP构建微博应用。本文是第一篇。

目录

  1. 项目介绍
  2. 系统架构设计
  3. R语言程序现实

1. 项目介绍

谈到多语言混编,同如在计算机领域跨学科一样,是我所一直倡导一种工作模式。当编程语言百花齐放,各种细分市场的小众语言如雨后春笋般地成长起来,比起通用型编程语言来说,这些小众语言在特定的领域中有着非常明显的优势。 比如统计应用,如果用Java写个逻辑回归程序感觉深不见底,而用R语言实现逻辑回归就是个很平常的一件事情。 再比如做一个Web网站,用PHP或Nodejs实现轻而易举,如果用Java做不仅代码量大,而且程序复杂。 所以,对于一个应用来说,一种通用的语言并不一定是最好的解决方案,如果能实现多种语言的结合,那么你做出来的应用可以很酷,很不一样!

对于本文要介绍的 每日中国天气 这个新浪微博应用,就是一种多语言混编的实现。

项目介绍

这个项目的出发点很简单,就是通过可视化技术,展示中国每个省份的天气情况,给准备旅游的朋友,提供一种出行的提示。

要做实现这个应用,我们首先要列出,要实现哪些功能,会遇到哪些问题等。

  • 天气数据:数据从哪里找到,如何下载,如何存储。
  • 定时任务:天气数据需要每日更新,图片需要每日新生成。
  • 地图和天气可视化:要把中国行政区图和天气数据结合在一起画图,让用户一眼就能看明白。
  • Web展示:通过可视化技术,我们生成的只是一张静态图片,如何发布到Web端进行展示。
  • 微博:通过结合新浪微博,让更多的用户看到并使用这个应用。
  • 用户交互:用户可以查看不同日期、不同类型的图片,用户还可以通过微博分享。
  • 虽然是个很小的应用,但五脏俱全,我们也需要完整的思考,如何才能实现这个应用呢!

2. 系统架构设计

从上面的功能描述中,单独使用一种语言也可以实现的。 如果单独用PHP开发,做一个Web网站非常容易,连接新浪微博也有现成的SDK可以调用,爬取数据及存储也不麻烦,那么如何实现地图和天气数据的可视化,似乎就是卡在这里了。 如果单独用R开发,爬取数据及存储同样很容易实现,地图和天气数据的可视化也是很方便就能画出来,但是用R做Web网站,那就会遇到很大的瓶颈了,因为R是单线程同步的计算模型,Web应用的高并发特点,会直接让R程序崩溃的。 所以,综合上面的问题,如果R语言和PHP语言能结合在一起使用,不仅能避开每种语言不擅长的地方,还能在擅长的领域发挥出每种语言的特性,我们将通过多语言的混编技术做出很不一样的应用来。

为了实现应用的功能需求,我们要设计一套系统架构。

w1

系统架构解释:

  • 通过定时器启动爬虫程序,到Yahoo的天气数据源下载数据。
  • 爬虫下载数据到本地服务器进行解析,存储应用相关的数据到CSV文件。
  • 可视化程序,读入天气数据及地图数据,生成静态的图片作为可视化输出。
  • 最终用户通过新浪微博,加载Web应用,看到了可视化生成的静态图片。
  • 最终用户通过新浪微博分享了这个应用,让更多的人看到这个应用。

下面按照语言的优势,把应用架构以语言的特性来划分,让R语言实现爬虫、处理数据和可视化,让PHP完成Web开发、新浪API接入和用户交互。

w2

由于我们这个应用,不需要让R和PHP直接进行通信,那么复杂度就会变得小很多了,像我之前做的晒粉丝应用,是3种语言的结合包括了R, PHP, Java,通过Java实现中间程序的调度,让R和PHP能够实现通信。

我们通过语言的划分,就可以扬长避短,让每种语言在最擅长的领域,完成最擅长的事情。

对于后台技术应用,定时器可以用Linux系统的CRON实现;然后用R语言程序来爬取数据,通过RCurl包来完成;爬取后的数据为XML格式,再通过R语言用XML包进行解析,以CSV格式进行本地存储;接下来,再用R语言处理数据,加载地图包ggmap、mapdata、maptools,最后配合plot()函数实现图片的输出,保存在本地服务器上。

对于前端的PHP应用来说,用PHP做一个Web网站很简单,使用YII快速开发框架;用PHP的新浪微博SDK进行API操作,实现新浪登陆,新浪分享等功能;最后Nginx + Spawn构建出PHP运行时环境,让Nginx完成负载均衡和图片加载,并配合PHP的访问规则,实现功能的切换。

合理的架构设计加上适应的语言的分工,就能轻松实现了 每日中国天气 这样的一个微博应用。其实,我们可以用这种多语言混搭的方式,创建出各种创新型的网站应用,但前提是先能掌握多种语言。

这里我想再多说一句,通常我认识的程序员,都是在自己的技术领域中无限畅快,一旦他们掌握了一种语言的核心技术,并有了一些开发经验后,往往不愿意再去学第二种语言。 对这些人来说,总觉得自己就是世界的中心,自己有能力实现的所有的功能。这些也都是有理想的程序员,只不过他们进入了一个误区,被现有的技术给迷住了,看不到、也不愿意看到外面的世界已经变了。我曾经就是这样的!

我承认Java是一种无所不能的编程语言,但是如果你所有程序都用Java实现,难道不觉得又费时又费力吗?通用性越强,反而专有领域的应用性就越差。这也是

华为现场面试编程题 编写一个函数来查找字符串数组中的最长公共前缀。(python不允许用zip)输入:strs = [“flower”,“flow”,“flight”] 阅读详情

相关推荐

R语言实验报告:使用数据可视化探索气温变化趋势

在本实验中,我们将使用R语言来分析和可视化气温数据,以探索气温的变化趋势。通过绘制折线图和柱状图,我们将展示气温的变化,并探索可能的趋势。数据集中的"月份"列包含了月份的名称,"平均气温"列包含了每个月的平均气温数据,"最高气温"列包含了每个月的最高气温数据,"最低气温"列包含了每个月的最低气温数据。通过数据可视化,我们可以更好地理解气温的变化趋势,并探索可能的季节性和长期趋势。我们使用的数据集是一个包含多个变量的数据框,其中每一行代表一个月份,每列代表一个变量。表示使用实际的数值作为柱子的高度,

DevWizard的博客 896

R语言在气象、水文中数据处理及结果分析、绘图实践技术应用

R 语言是一门由统计学家开发的用于统计计算和作图的语言(a Statistic Language developed for Statistic by Statistician),由 S 语言发展而来,以统计分析功能见长。R 软件是一款集成 了数据操作、统计和可视化功能的优秀的开源软件。来自世界各地开源社区的研究者为其提供了各种 丰富的工具包,目前在官方网站注册的 R 包已经多达 16066 个,覆盖了各种学科和各个行业。如果要使用最新的统计算法以及汇制各种非常规的新式图形,那么 R 几乎是一个必选项。

weixin_55561616的博客 742

18、深入解析航空飞行数据中的秘密:从数据清理到高级分析

本文详细解析了如何使用R语言处理和分析航空飞行数据,从基础的数据清理到复杂的回归分析和机器学习模型构建。文章涵盖了探索性数据分析、天气数据的整合、地理信息可视化、时间序列预测以及航班延误的优化策略等内容,展示了如何通过数据挖掘技术提高航空运营效率和乘客满意度,并探讨了数据质量评估与隐私保护的重要性。

convnet3designer的博客 90

Python爬取天气数据及可视化分析!

天气预报我们每天都会关注,我们可以根据未来的天气增减衣物、安排出行,每天的气温、风速风向、相对湿度、空气质量等成为关注的焦点。本次使用python中requests和BeautifulSoup库对中国天气网当天和未来14天的数据进行爬取,保存为csv文件,之后用matplotlib、numpy、pandas对数据进行可视化处理和分析,得到温湿度度变化曲线、空气质量图、风向雷达图等结果,为获得未来天气信息提供了有效方法。

Python84310366的博客 8856

天气数据可视化平台-计算机毕业设计vue

气象网站中有大量的多维度气象数据信息,供社会各行业作为参考研判的依据, 作为当前数据分析领域最为流行的语言,具有丰富和强大的库.为数据分析提供大量函数,通过利用 程序对气象网站大量的气象信息进行分析,可以挖掘出关于气象气候演变的规律信息,为气象预报提供更丰富的参考依据。

QQ511008285的博客 497

R语言McSpatial_R语言天气可视化应用

前言在很多人看来,R语言还只是个玩具,完全不具备企业级应用的能力。说这些话的人,根本就不了解R语言,更不清楚如何做企业级应用开发。从我最早接触R语言时,就把R做为可视化引擎嵌入到了晒粉丝的微博应用中;后来又开发了数据挖掘算法竞赛网站,并把R语言做为算法引擎,并支持在线编程及运行;我做的第三个R语言应用就是本文要给大家分享的每日中国天气微博应用,这次同样是把R做为可视化引擎,并让R完成爬虫、XML文...

weixin_39832727的博客 782

php开发天气可视化,R语言天气可视化应用 | 粉丝日志

用于生成数据文件的R语言的函数实现。> filename loadDate',date))+ city-read.csv(file='woeid.csv',header=false,fileencoding='utf-8',>-c('en','woeid','zh','prov','long','lat')+>-city[-nrow(city),]++>-do.call(r...

weixin_36212560的博客 507

R语言的数据可视化

用户可以通过theme()函数对图表的各个部分进行自定义。Rtheme() +labs(title="自定义主题的散点图")

2501_90416848的博客 589

R语言的网络编程

R语言是一种用于统计计算和图形绘制的编程语言,最早由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman于1993年开发。R语言的设计理念是提供一种可扩展的编程环境,使得用户能够方便地进行统计分析与图形化展示。丰富的包管理系统:R有一个庞大的社区,提供了数以千计的包,用户可以根据需要加载不同的包进行各类数据分析。强大的图形功能:R具有多种图形功能,可以实现非常复杂的可视化。良好的统计分析能力:R内置了大量的统计模型与算法。R语言的网络编程为数据分析提供了广阔的空间。

2501_90406416的博客 1041

R语言气候分析中的应用(时间序列建模全解析)

掌握R语言气候数据分析中的时间序列模型,系统解析ARIMA、SARIMA等建模方法,适用于气温、降水预测等场景。结合实际案例,展现数据预处理、模型诊断与预测全流程,助力高效精准分析。方法实用,值得收藏。

LearnPlex的博客 1068

【限时掌握】环境监测时空数据处理:R语言三大绘图包对比与实操

掌握环境监测的R语言时空可视化高效方法,本文对比三大绘图包适用场景与操作技巧,涵盖地理热力图、时间序列叠加等核心功能,提升数据表达精度。实战代码示例清晰易懂,环境监测分析利器值得收藏

DebugVibe的博客 614

揭秘气候变化对农作物产量的影响:R语言数据分析全流程详解

掌握气候变化对农作物产量的影响规律,本文详解农业产量的 R 语言气候影响分析全流程,涵盖数据清洗、时序建模与可视化核心方法,适用于科研与农业政策研究场景,助力精准决策,值得收藏。

DevPath的博客 1074

TowardsDataScience 2023 博客中文翻译(二百七十一)

在 Youtube 上有很多适合孩子观看的视频。Cocomelon 有许多视频,我希望在孩子每天允许的观看时间内展示好的视频。寻找这些热门视频对数据专业人士来说是一次迷人的探索。希望我的帖子对你有帮助。接下来,我将继续我的 R 之旅,并使用 Shiny 构建一个与用户互动的应用程序。希望这个故事对你有帮助。本文是我工程与数据科学故事系列的一部分赵成智在本文中,我们详细介绍了检索增强生成的整个过程:我们已经查看了不同的数据加载器。我们讨论了数据拆分的可能方法及其潜在的细微差别。

龙哥盟 1733

A beautiful story about NYC weather

(This article was first published on  Revolutions, and kindly contributed to R-bloggers)      Inspired by Tufte's classic visualization of New York City weather in 2013, Alex Bresler used the

四纪启悟 · 数据科学 753

构建R语言天气包的实践与思考

本文将探讨如何使用R语言开发一个天气信息包。通过创建和配置render.R、chinaWeather.R和chinaWeather-package.R文件,定义实用函数和数据集,以及修改项目配置文件,实现一个可以获取和可视化天气数据的包。文章还将讨论调试和文档生成的步骤,以及在开发过程中对代码的维护和优化。

weixin_35732273的博客 744

基于Python的天气数据可视化平台

摘要:随着社会多元化的不断发展,天气数据问题不可被简单的理解为是科学问题,更多的是环境问题,可以直接影响到人民的日常生活,甚至对一个国家的政治经济带来影响,由此可见,天气预测是一项非常重要的行业。基于此,我们就需要开发一个可视化的、综合的、方便人们查看的项目。基于Python的天气数据可视化设计与实现,通过使用基于Python的网络爬虫技术,能在短时内提取有价值的信息数据。然后根据数据的形式进行整理,运用 HTML、CSS、JavaScript、Flask 框架、Echarts、WordCloud 等技术对

2164

R语言在地理信息可视化中的应用

本文介绍如何利用R语言结合地图包和天气数据,通过简单的代码绘制出中国各省的天气总结地图。首先,通过读取并处理天气数据,将这些数据与中国的行政区域地图进行匹配,然后定义天气状况的映射关系,最终通过数据可视化输出中国各省的天气概览图。

weixin_35732273的博客 308

R语言PHPJava混合编程实现天气应用

本文介绍了如何利用R、PHPJava三种编程语言构建一个微博天气应用。通过合理的架构设计和语言的适当组合,应用能够高效地抓取天气数据,生成并展示天气信息图片。文章强调了掌握多种编程语言的重要性,并且分享了个人从单一语言编程到多语言编程的心得体会。

weixin_34471637的博客 360
上一篇: R语言3.1版本新特性
下一篇: R包开发每日中国天气
Fens
博客等级 码龄25年 126粉丝 277原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值