初学R,想画一个
四组数据,每一组在不同的数据量下的值,
在excel中画了如下图,随着横坐标数据量的增长,值的变化趋近饱和,并添加了趋势线。
在R中用ggplot2画了如下
#先将数据导入
library(ggplot2)
x=c(15872,31744,63488,95232,126976)
y1=c(5148,6241,6929,7196,7270)
y2=c(5948,7570,8878,9381,9632)
y3=c(3325,4281,4921,5175,5322)
y4=c(3373,4350,5177,5525,5775)
DF <- data.frame(x, y1,y2,y3,y4)
# 调用ggplot, 将四条线画在一起,并且每条线中画了两种曲线stat_smooth(),用不同的formula,
ggplot(DF,aes(x = x)) +
geom_point(aes(y = y1), )+
stat_smooth(method = "rlm", formula = y~log(x), aes(x,y1, color = 'logarithmic'), se = FALSE) +
stat_smooth(method = 'lm', formula = y ~ poly(x,2), aes(x,y1,colour = 'polynomial'), se= FALSE) +
geom_line(aes(y = y1)) +
geom_point(aes(y = y2),) +
stat_smooth(method = "rlm", formula = y~log(x), aes(x,y2, color = 'logarithmic'), se = FALSE) +
stat_smooth(method = 'lm', formula = y ~ poly(x,2), aes(x,y2,colour = 'polynomial'), se= FALSE) +
geom_line(aes(y = y2)) +
geom_point(aes(y = y3)) +
stat_smooth(method = "rlm", formula = y~log(x), aes(x,y3, color = 'logarithmic'), se = FALSE) +
stat_smooth(method = 'lm', formula = y ~ poly(x,2), aes(x,y3,colour = 'polynomial'), se= FALSE) +
geom_line(aes(y = y3)) +
geom_point(aes(y = y4)) +
stat_smooth(method = "rlm", formula = y~log(x), aes(x,y4, color = 'logarithmic'), se = FALSE) +
stat_smooth(method = 'lm', formula = y ~ poly(x,2), aes(x,y4,colour = 'polynomial'), se= FALSE) +
geom_line(aes(y = y4)) +
theme_bw() +
scale_colour_brewer(name = 'Trendline', palette = 'Set2')
如图
显然,没有excel画的好看[哭笑脸]
说明:
ggplot2的学习可以参照《ggplot2:数据分析与图形艺术》这本书,可以抛开R的基础语法去学习。
绘图有两种方式,一种是一步到位,像qplot(),另一种是逐层叠加,像ggplot2,就是上图画的这个。
一个图层有5部分组成:
数据(data),必须是一个数据框data frame,在绘图结束后可以被修改。
一组图形属性映射(mapping),用来设定数据集中的变量如何映射到该图层的图层属性。
几何对象(geometric),用来指定在图形中用那种几何对象来绘图。几何对象决定了一组可用的图形属性。
统计变换(statistics),对原数据做一些有用的统计变换。统计变换返回一个包含新变量的数据框,这些新变量可以通过特殊的语法映射到图形属性中。
位置调整,通过调整元素位置来避免图形重合。
每一个几何对象都对应着一个默认的统计变换和位置参数,而每一个统计变换都对应着一个默认的几何对象参数,所以对于一个图层我们只需要设定stat或geom参数即可,
geom_XXX(mapping, data, ..., stat, position)
stat_XXX(mapping, data, ..., geom, position)