我有一个使用线型和颜色美学的数据集。传说既展示了美学,又展示了传奇本身中的一种美学(颜色或线型)。
这也适用于另一个数据集,在这个数据集中,我只希望在geom_line美学中使用ifelse
语句执行大于其余四行中的一行,但实际的ifelse
语句显示在传说中。
我从mtcars
数据集中获取了一个示例,我希望只显示颜色。
library(tidyverse)
mtcars <- as.tibble(mtcars)
mtcars$gear <- as.factor(mtcars$gear)
mtcars$cyl <- as.factor(mtcars$cyl)
mtcars1 <- mtcars %>%
arrange(gear) %>%
ggplot(aes(x = qsec, group = 1)) +
geom_point(aes(y=disp, group = cyl, color = cyl)) +
geom_line(aes(y=disp, group = cyl, color = cyl, linetype = cyl)) +
scale_color_manual(values=c("#000000", "#E69F00", "#56B4E9")) +
labs(title = "MTCARS Example", colour="Cylinder",x= "x",y="Disp")
print(mtcars1)
是否可以操纵图例只展示一种美学?
答案 0 :(得分:3)
尝试
mtcars1 + guides(color = "none")
mtcars1 + guides(linetype = "none")
答案 1 :(得分:1)
简短回答:使用相同的图例名称:labs(colour = "Cylinder", linetype = "Cylinder)
。
# Simplified version of the same plot
library(ggplot2)
# 1. All aes specified in main ggplot2 function
# 2. In aes x always goes first, y always goes second,
# you don't need to write x = ..., y = ...
ggplot(mtcars, aes(qsec, disp, color = cyl, linetype = cyl)) +
geom_point() +
geom_line() +
scale_color_manual(values = c("#000000", "#E69F00", "#56B4E9")) +
# For "tidier" code use same order as in aes
# (except for main title, or subtitle)
labs(title = "MTCARS Example",
x = "x",
y = "Disp",
color = "Cylinder",
linetype = "Cylinder")
如果你想使用组合图例,你必须为aes
使用相同的变量(你已经这样做了)。默认情况下,图例名称为cyl
。但是,当您更改单个美学的名称时(color = "Cylinder"
)ggplot2
认为您使用了两个不同的变量。因此,您必须为这样的情节重命名两种美学:
PS:我简化了您的ggplot2
功能。不要多次重写y=disp, color = cyl
,请在主ggplot2
函数中设置它们。此外,您不需要group
(知道您尝试在那里做什么)。