查看原文
其他

R可视化10|ggplot2-图层图形语法 (2)

pythonic生物人 pythonic生物人 2022-10-25

"pythonic生物人"的第108篇分享

本文介绍ggplot2到底能绘制那些基础图(geom_函数图层)。当然这里只是介绍基础图层,不同的geom函数叠加会生成不同类型组合图,这里不做介绍。

本文目录

5、几何对象(geom)
  基本图(GRAPHICAL PRIMITIVES)
  辅助线图(LINE SEGMENTS)
  单个连续变量、单个离散变量图
  两个连续变量图
  一个离散变量,一个连续变量图 
  两个离散变量图 
  continuous bivariate distribution 图
  一个时间序列,一个连续变量图 
  误差棒图 
  地图
  三个变量

5、几何对象(geom

几何图像负责图形渲染,决定最终绘制什么图(散点图,箱图,直方图,折线图等等)。 

  • 基本图(GRAPHICAL PRIMITIVES)

options(repr.plot.width = 6, repr.plot.height = 3.5, repr.plot.res = 300)
#基本图(GRAPHICAL PRIMITIVES)
a <- ggplot(economics, aes(date, unemploy)) 
b <- ggplot(seals, aes(x = long, y = lat))
p1 <- a + geom_blank()+ggtitle('geom_blank')
p2 <- b + geom_curve(aes(yend = lat + 1, xend=long+1),curvature=1)+ggtitle('geom_curve')
p3 <- a + geom_path(lineend="butt", linejoin="round", linemitre=1)+ggtitle('geom_path')
p4 <- a + geom_polygon()+ggtitle('geom_polygon')
p5 <- b + geom_rect(aes(xmin = long, ymin=lat, xmax= long + 1, ymax = lat + 1))+ggtitle('geom_rect')
p6 <- a + geom_ribbon(aes(ymin=unemploy - 900, ymax=unemploy + 900))+ggtitle('geom_ribbon')

p7 <- grid.arrange(p1,p2,p3,p4,p5,p6,nrow = 2)
ggsave("scale14.png", p7, width = 6, height = 3)
  • 辅助线图(LINE SEGMENTS)

b <- ggplot(seals, aes(x = long, y = lat))
p1 <- b + geom_abline(aes(intercept = 0, slope = 1)) + ggtitle("geom_abline")
p2 <- b + geom_hline(aes(yintercept = lat)) + ggtitle("geom_hline")
p3 <- b + geom_vline(aes(xintercept = long)) + ggtitle("geom_vline")
p4 <- b + geom_segment(aes(yend = lat + 1, xend = long + 1)) + ggtitle("geom_segment")
p5 <- b + geom_spoke(aes(angle = 1:1155, radius = 1)) + ggtitle("geom_spoke")
p6 <- grid.arrange(p1, p2, p3, p4, p5, nrow = 2)
ggsave("scale15.png", p6, width = 6, height = 3)
  • 单个连续变量、单个离散变量图

#单个连续型变量
options(repr.plot.width = 6, repr.plot.height = 4.5, repr.plot.res = 300)
c <- ggplot(mpg, aes(hwy)); 
c2 <- ggplot(mpg)
p1 <- c + geom_area(stat = "bin")+ggtitle('geom_area')
p2 <- c + geom_density(kernel = "gaussian")+ggtitle('geom_density')
p3 <- c + geom_dotplot()+ggtitle('geom_dotplot')
p4 <- c + geom_freqpoly()+ggtitle('geom_freqpoly')
p5 <- c + geom_histogram(binwidth = 5)+ggtitle('geom_histogram')
p6 <- c2 + geom_qq(aes(sample = hwy))+ggtitle('geom_qq')

#单个离散型变量
d <- ggplot(mpg, aes(fl))
p7 <- d + geom_bar()+ggtitle('geom_bar')
p8 <- grid.arrange(p1,p2,p3,p4,p5,p6,p7,nrow = 3)
ggsave("scale16.png", p8, width = 6, height = 4.5)
  • 两个连续变量图

#两个连续变量
options(repr.plot.width = 6, repr.plot.height = 7.5, repr.plot.res = 300)
e <- ggplot(mpg, aes(cty, hwy))
p1 <- e + geom_label(aes(label = cty)) + ggtitle("geom_label")
p2 <- e + geom_jitter(height = 2, width = 2) + ggtitle("geom_jitter")
p3 <- e + geom_point() + ggtitle("geom_point")
library(quantreg)
p4 <- e + geom_quantile() + ggtitle("geom_quantile")
p5 <- e + geom_rug(sides = "bl") + ggtitle("geom_rug")
p6 <- e + geom_smooth() + ggtitle("geom_smooth")
p7 <- e + geom_text(aes(label = cty), nudge_x = 1, nudge_y = 1, check_overlap = TRUE) + ggtitle("geom_text")
p8 <- grid.arrange(p1,p2,p3,p4,p5,p6,p7,nrow = 3)
ggsave("scale17.png", p8, width = 6, height = 4.5
  • 一个离散变量,一个连续变量图

# 一个离散变量,一个连续变量
options(repr.plot.width = 6, repr.plot.height = 4.5, repr.plot.res = 300)
f <- ggplot(mpg, aes(class, hwy))
p1 <- f + geom_col() + ggtitle("geom_col")
p2 <- f + geom_boxplot() + ggtitle("geom_boxplot")
p3 <- f + geom_dotplot(binaxis = "y", stackdir = "center") + ggtitle("geom_dotplot")
p4 <- f + geom_violin(scale = "area") + ggtitle("geom_violin")
p5 <- grid.arrange(p1,p2,p3,p4,nrow = 2)
ggsave("scale18.png", p5, width = 6, height = 4.5)  
  • 两个离散变量图

#两个离散变量
options(repr.plot.width = 4, repr.plot.height = 3.0, repr.plot.res = 300)
g <- ggplot(diamonds, aes(cut, color))
g + geom_count()+ ggtitle("geom_count")
  • continuous bivariate distribution 图

#continuous bivariate distribution
options(repr.plot.width = 4, repr.plot.height = 6.0, repr.plot.res = 300)
h <- ggplot(diamonds, aes(carat, price))
library(hexbin)
p1 <- h + geom_bin2d() + ggtitle("geom_bin2d")
p2 <- h + geom_density2d() + ggtitle("geom_density2d")
p3 <- h + geom_hex() + ggtitle("geom_hex")

p4 <- grid.arrange(p1,p2,p3,nrow = 3)
ggsave("scale19.png", p4, width = 4, height = 6
  • 一个时间序列,一个连续变量图

#一个时间序列,一个连续变量
options(repr.plot.width = 4, repr.plot.height = 7.0, repr.plot.res = 300)
i <- ggplot(economics, aes(date, unemploy))
p1 <-i + geom_area() + ggtitle("geom_area")
p2 <-i + geom_line() + ggtitle("geom_line")
p3 <-i + geom_step() + ggtitle("geom_step")

p4 <- grid.arrange(p1,p2,p3,nrow = 3)
ggsave("scale20.png", p4, width = 4, height = 7
  • 误差棒图

#误差棒图 
options(repr.plot.width = 4.5, repr.plot.height = 4.0, repr.plot.res = 300)
df <- data.frame(grp = c("A""B"), fit = 4:5, se = 1:2
j <- ggplot(df, aes(grp, fit, ymin = fit-se, ymax = fit+se))
p2 <-j + geom_crossbar(fatten = 2) + ggtitle("geom_crossbar")
p3 <-j + geom_errorbar() + ggtitle("geom_errorbar")
p4 <-j + geom_linerange() + ggtitle("geom_linerange")
p5 <-j + geom_pointrange() + ggtitle("geom_pointrange")
p6 <- grid.arrange(p2,p3,p4,p5,nrow = 2)
ggsave("scale21.png", p6, width = 4.5, height = 4
  • 地图

options(repr.plot.width = 4.5, repr.plot.height = 3.5, repr.plot.res = 300)
library(maps)
data <- data.frame(murder = USArrests$Murder,
state = tolower(rownames(USArrests)))
map <- map_data("state")
k <- ggplot(data, aes(fill = murder))
k + geom_map(aes(map_id = state), map = map) + expand_limits(x = map$long, y = map$lat) + ggtitle("geom_map")
  • 三个变量

# 三个变量
options(repr.plot.width = 4.5, repr.plot.height = 6, repr.plot.res = 300)
seals$z <- with(seals, sqrt(delta_long^2 + delta_lat^2))
l <- ggplot(seals, aes(long, lat))
p1 <- l + geom_contour(aes(z = z)) + ggtitle("geom_contour")

p2 <- l + geom_raster(aes(fill = z), hjust = 0.5, vjust = 0.5, interpolate = FALSE) + ggtitle("geom_raster")
p3 <- l + geom_tile(aes(fill = z)) + ggtitle("geom_tile")

p4 <- grid.arrange(p1,p2,p3,nrow = 3)
ggsave("scale22.png", p4, width = 4.5, height = 4

本文结束,更多好文:

有用请“点赞”“在看”“分享”

有意见请移步到QQ群629562529反馈,一起进步哈!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存