我找到了一个很酷的Wes Anderson调色板程序包,但是在这里实际使用它失败了。我正在查看的变量(Q1)具有选项1和2。该集合中有一个NA,将对其进行绘制,但是我也希望将其删除。
//*[local-name()='message-resource' and ./*[local-name()='message' and contains(text(), 'some message substring')]]//*[local-name()='code'][contains(text(), 'edi')]
我得到的图正在工作,但是没有颜色。有什么想法吗?
答案 0 :(得分:1)
有几个问题需要解决。
如Mako所述,对fill
的调用缺少了aes()
的美感。
此外,OP reports的错误消息是找不到调色板。 wesanderson
程序包包含可用调色板的列表:
names(wesanderson::wes_palettes)
[1] "BottleRocket1" "BottleRocket2" "Rushmore1" "Rushmore" "Royal1" "Royal2" "Zissou1" [8] "Darjeeling1" "Darjeeling2" "Chevalier1" "FantasticFox1" "Moonrise1" "Moonrise2" "Moonrise3" [15] "Cavalcanti1" "GrandBudapest1" "GrandBudapest2" "IsleofDogs1" "IsleofDogs2"
OP的代码中没有要求称为"GrandBudapest"
的调色板。相反,我们必须在"GrandBudapest1"
和"GrandBudapest2"
之间进行选择。
此外,帮助文件help("wes_palette")
列出了可用的调色板。
这是一个工作示例,该示例使用在下面的数据部分中创建的伪数据:
library(ggplot2)
library(wesanderson)
ggplot(RA_Survey, aes(x = Q1, fill = Q1)) +
geom_bar() +
scale_fill_manual(values=wes_palette(n=2, name="GrandBudapest1"))
OP要求从集合中删除NA。有两种选择:
ggplot()
删除NA。在绘制x轴时,我们可以告诉ggplot()
除去NA:
library(ggplot2)
library(wesanderson)
ggplot(RA_Survey, aes(x = Q1, fill = Q1)) +
geom_bar() +
scale_fill_manual(values=wes_palette(n=2, name="GrandBudapest1")) +
scale_x_discrete(na.translate = FALSE)
注意,这会生成一条警告消息已删除3行,其中包含非限定值(stat_count)。要消除此消息,我们可以使用geom_bar(na.rm = TRUE)
。
另一个选项是通过过滤从数据中删除NAs
library(dplyr)
library(ggplot2)
library(wesanderson)
ggplot(RA_Survey %>% filter(!is.na(Q1)), aes(x = Q1, fill = Q1)) +
geom_bar() +
scale_fill_manual(values=wes_palette(n=2, name="GrandBudapest1"))
创建完全相同的图表。
由于OP没有提供示例数据集,因此我们需要创建自己的数据集:
library(dplyr)
set.seed(123L)
RA_Survey <- data_frame(Q1 = sample(c("1", "2", NA), 20, TRUE, c(3, 6, 1)))
RA_Survey
# A tibble: 20 x 1 Q1 <chr> 1 2 2 1 3 2 4 1 5 NA 6 2 7 2 8 1 9 2 10 2 11 NA 12 2 13 1 14 2 15 2 16 1 17 2 18 2 19 2 20 NA