【发布时间】:2020-04-11 12:24:43
【问题描述】:
我已将我的代码精简为以下 MWE:
library(tidyverse)
library(ggplot2)
x<-rnorm(1000)
df <- data.frame(x = x)
df <- mutate(df, colors = 'blue')
p1<-ggplot(df, aes(x=x, fill=colors)) +
geom_histogram()
p1
p2<-ggplot(df, aes(x=x), fill=colors) +
geom_histogram()
p2
p3<-ggplot(df, aes(x=x)) +
geom_histogram(fill=colors)
p3
我希望我的直方图为蓝色,但 p1 为红色,p2 为灰色,p3 抛出错误。
在我的实际应用中,我会使用不止一种颜色,因此使用mutate,我认为我可以让它适用于一种颜色,它也适用于其他颜色。
也许我上面的 MWE 太 MWE。这是一个更详细的代码:
x<-rnorm(1000)
df <- data.frame(x = x)
df <- mutate(df, colors = case_when(
x < quantile(x,0.25) ~ "red",
x >= quantile(x,0.25) & x < quantile(x,0.5) ~ "orange",
x >= quantile(x,0.5) & x < quantile(x,0.75) ~ "blue",
x >= quantile(x,0.75) ~ "green"
)
)
p1<-ggplot(df, aes(x=x, fill=colors)) +
geom_histogram()
p1
这会返回一个有四种颜色的直方图,但它们不是蓝色、绿色、橙色和红色!
【问题讨论】:
-
为什么在第三个 ggplot() 调用中使用两个填充参数?如果我是正确的,你只是想让你的三个直方图是不同的颜色?您不需要在 data.frame() 中将颜色定义为变量
-
@AsifLalDin 哎呀,这是我草率的复制粘贴。我不想要三个直方图,这是我为解决问题所做的三个尝试。
-
您可以看到下面的两个答案,应该对其进行排序。干杯