【发布时间】:2021-05-01 22:55:44
【问题描述】:
我需要从混合了三个几何图形的熔化 data.table 中绘制图表:geom_line、geom_col 和 geom_point。 geom_line和geom_point分享color美学:
set.seed(1)
time <- 1:10
mag <- 10:20
q_mag <- c("up", "up", "down")
l_a <- sample(1:12, 10)
l_b <- sample(8:20, 10)
p_a <- sample(1:12, 10)
p_b <- sample(8:20, 10)
dt <- data.table(time, mag, q_mag, l_a, l_b, p_a, p_b)
dt <- melt(dt, measure.vars = c("mag", "l_a", "l_b", "p_a", "p_b"))
ggplot(data = dt, aes (x = time)) +
geom_col( data = dt[variable %in% "mag"]
, aes( y = value
, fill = q_mag)) +
scale_fill_grey(start = .4) +
geom_line( data = dt[variable %in% c("l_a", "l_b")]
,aes( y = value
, color = variable)
,size =1) +
geom_point( data = dt[variable %in% c("p_a", "p_b")]
,aes( y = value
,color = variable
,size = variable
,shape = variable)) +
scale_shape_manual( name = element_blank()
, labels = c("Point A", "Point B")
, values = c("circle", "cross")
)+
scale_size_manual( name = element_blank()
, labels = c("Point A", "Point B")
, values = c(4,2)
)+
scale_color_manual( name = element_blank()
, labels = c("Line A", "Line B", "Point A", "Point B")
, values = c("red", "green", "red", "blue")
)
但是,我希望以另一种方式呈现图例:
-
Point A是一个大红圈, -
Point B作为一个小蓝十字, -
Line A是一条红线(没有意义),并且 -
Line B是一条绿色直线(无意义)。
我如何完成想要的图例?
【问题讨论】:
-
我认为目标可能是结合图例,例如stackoverflow.com/a/12411595/3358272。但是,由于您为每种美学使用不同的数据和美学,我不知道这是否容易(或可能)。
-
感谢您的参考。不完全相同的问题,但非常有用。
标签: r ggplot2 ggnewscale