在 R (ggplot2) 中为密度图创建手动图例
create a manual legend for density plots in R (ggplot2)
我想在图表中添加图例。我在网上找到的所有解决方案都使用 scale_color_manual - 但它对我不起作用。传说在哪里?
这是我的代码:
library(ggplot2)
ggplot() +
geom_density(aes(x = rnorm(100)), color = 'red') +
geom_density(aes(x = rnorm(100)), color = 'blue') +
xlab("Age") + ylab("Density") + ggtitle('Age Densities')
theme(legend.position = 'right') +
scale_color_manual(labels = c('first', 'second'), values = c('red', 'blue'))
您的数据格式不正确,您基本上是在公共 "canvas" 上创建两个单独的图,请参阅下面的代码(df
的创建是关键部分):
library(ggplot2)
df <- data.frame(
x = c(rnorm(100), runif(100)),
col = c(rep('blue', 100), rep('red', 100))
)
ggplot(df) +
geom_density(aes(x = x, color = col)) +
xlab("Age") + ylab("Density") + ggtitle('Age Densities') +
theme(legend.position = 'right') +
scale_color_manual(labels = c('first', 'second'), values = c('red', 'blue'))
如果出于某种原因您绝对需要两个 geom 使用不同的数据源,请将每个 geom 的 color = XXX
部分移动到 aes()
内,然后使用命名向量手动定义颜色:
ggplot() +
geom_density(aes(x = rnorm(100), color = 'first')) +
geom_density(aes(x = rnorm(100), color = 'second')) +
xlab("Age") + ylab("Density") + ggtitle('Age Densities') +
theme(legend.position = 'right') +
scale_color_manual(values = c('first' = 'red', 'second' = 'blue'))
我想在图表中添加图例。我在网上找到的所有解决方案都使用 scale_color_manual - 但它对我不起作用。传说在哪里? 这是我的代码:
library(ggplot2)
ggplot() +
geom_density(aes(x = rnorm(100)), color = 'red') +
geom_density(aes(x = rnorm(100)), color = 'blue') +
xlab("Age") + ylab("Density") + ggtitle('Age Densities')
theme(legend.position = 'right') +
scale_color_manual(labels = c('first', 'second'), values = c('red', 'blue'))
您的数据格式不正确,您基本上是在公共 "canvas" 上创建两个单独的图,请参阅下面的代码(df
的创建是关键部分):
library(ggplot2)
df <- data.frame(
x = c(rnorm(100), runif(100)),
col = c(rep('blue', 100), rep('red', 100))
)
ggplot(df) +
geom_density(aes(x = x, color = col)) +
xlab("Age") + ylab("Density") + ggtitle('Age Densities') +
theme(legend.position = 'right') +
scale_color_manual(labels = c('first', 'second'), values = c('red', 'blue'))
如果出于某种原因您绝对需要两个 geom 使用不同的数据源,请将每个 geom 的 color = XXX
部分移动到 aes()
内,然后使用命名向量手动定义颜色:
ggplot() +
geom_density(aes(x = rnorm(100), color = 'first')) +
geom_density(aes(x = rnorm(100), color = 'second')) +
xlab("Age") + ylab("Density") + ggtitle('Age Densities') +
theme(legend.position = 'right') +
scale_color_manual(values = c('first' = 'red', 'second' = 'blue'))