R读取MySQL数据库,需要用到RMySQL包,同样使用install.packages(“RMySQL”)先安装,之后就可以注释掉了,
读取数据#install.packages("RMySQL")
library(RMySQL)
conn
dbSendQuery(conn, 'SET NAMES utf8')
houData
dbDisconnect(conn)
#houData
使用dbConnect方法初始化一个连接,填写dbname(数据库名),username(用户名),password(密码),host(数据库地址),port(du)
dbReadTable方法,读取了hou_info表的数据,同样可以使用sqlQuery方法,通过SQL查询数据
注:这里使用dbSendQuery方法,设置查询输入未utf8格式,避免中文乱码,查询完数据后使用dbDisconnect关闭连接,不然若运行多次后会报“Cannot allocate a new connection: 16 connections already opened”错误
数据处理
这里我是抓取了武汉2011年12月到2017年2月的房屋成交量数据作为分析,格式如下:
统计需求:
1)每月总成交量统计
houData$date
houData
hjData
hjData$hou_num
#月成交量
houMonth
houMonth
names(houMonth)
houMonth$time
houMonth$timeNumber
将日期格式化,并通过时间排序
hjData
下面我就可以按月来分组,获取每个月份的商品房交易量,将数据转换为数据框,并命名行名,列名
好了可以开始绘制图表了
par(family='STKaiti')
plot(houMonth$timeNumber,houMonth$totalNum,
xlab = "时间(月份)",
ylab = "成交量",
xaxt = "n",
main = "2011年12月到2017年2月成交量统计",
col = "blue",
type = "b")
axis(1, at=houMonth$timeNumber,labels = houMonth$time, cex.axis=1.5)
这里使用到了par函数,避免中文字符乱码,使用plot画图,使用axis自定义横坐标,用法可参考《数据处理及分析-读写Excel》,标题和坐标文本也可以使用title函数来添加,如:
title("2011年12月到2017年2月成交量统计",xlab = "时间(月份)",ylab = "成交量")
2)每个区的每月总成交量统计
统计了江岸区和江汉区两个地区的对比情况
获取数据同“合计”部分,绘制多条曲线,使lines,即在原来的图表上新增一条曲线,横坐标是不变的
lty函数表示使用虚线
lines(jahouMonth$timeNumber,jhhouMonth$totalNum,col="green",type="b",lty=2);
也可以为图表添加图例
legend("topleft",inset = .05,title = "地区",c("江岸区","江汉区"),
lty = c(1,2), pch = c(16,1),col = c("blue","green"))
因为是两个图形,所以lty,pch,col都是以向量来表示,
legend用法:
legend(location,title,legend,…)
结果展示: