我使用
这是从@Hernando Casas借来的一个模拟示例。
我找到了一些示例并修改了我的代码。
ggplot2
创建了一个混合密度图,希望在图中添加摘要信息,即每个密度的均值和代表某种真实均值的1个值。这是从@Hernando Casas借来的一个模拟示例。
set.seed(1234)
data <- data.frame(value = rnorm(n = 10000, mean =50, sd = 20),
type = sample(letters[1:2], size = 10000, replace = TRUE))
data$value[data$type == "b"] <- data$value[data$type == "b"] +
rnorm(sum(data$type == "b"), mean = 55)
library(ggplot2)
gp <- ggplot(data=data, aes_string(x="value"))
gp <- gp + geom_density(aes_string(fill="type"), alpha=0.3)
在将摘要信息添加为垂直线之后,图表看起来像这样。vlines <- data.frame(value = c(mean(data$value[data$type == "a"]), mean(data$value[data$type == "b"])),Mean = c("A", "B"))
gp2 <- gp + geom_vline(data=vlines,
aes(xintercept=value, colour=Mean),
size=1.05, linetype="dashed", show_guide=TRUE)
gp3 <- gp2+geom_vline(xintercept=(50+55+50)/2,
size=1.05)
虽然情节正是我想要的,但我想在图例中添加一条实线,放在框“Mean”下面,命名为“Overall”。这就是我卡住的地方,因为我对ggplot2
并不很熟悉,所以不知道如何自定义图例。我找到了一些示例并修改了我的代码。
gp <- ggplot(data=data, aes_string(x="value"))
gp <- gp + geom_density(aes_string(fill="type"), alpha=0.3)
vlines <- data.frame(value = c(mean(data$value[data$type == "a"]),
mean(data$value[data$type == "b"]),
(50+55+50)/2),
Mean = c("A", "B", "Overall"))
gp2 <- gp + geom_vline(data=vlines,
aes(xintercept=value, colour=Mean),
size=1.05, linetype="dashed", show_guide=TRUE)
现在我有一个图例,但我想将线条的颜色改为与密度相同,更重要的是,我需要将“Overall”线条更改为纯深色,但我遇到了自定义问题。 我真的很感激任何人的帮助。谢谢。
scale_color_manual(values = c("#F8766D","#00BFC4","black"))
。来源:gg_color_hue函数来自https://dev59.com/Bmsy5IYBdhLWcg3w9i1u#8197703 - Herokashow_guide
is deprecated. It is now called asshow.legend
- patL