ggplot 2条形图,带有不同的调色板

SWR*_*SWR 4 r ggplot2

我目前在R中有这个条形图(创建时ggplot2) 在此输入图像描述

我需要像这样:

在此输入图像描述

我尝试使用RColorBrewer包,但它没有用,因为相应调色板中的最大颜色数量为11.任何想法?

pal <- brewer.pal(11,"RdYlGn")
ggplot(data = bm_mod, aes(x = bm_mod$country, y = bm_mod$V)) + 
  geom_bar(stat = "identity", colour = pal, fill = pal) + coord_flip() + 
  labs(y="Under/over valuation in %", x="")
Run Code Online (Sandbox Code Playgroud)

这是数据:链接

更新:我用这段代码再试一次:

ggplot(data = bm_mod, aes(x = country, y = V)) + 
  geom_bar(stat = "identity", fill = country, show_guide = FALSE) + 
  coord_flip() + scale_fill_manual(values = colorRampPalette(brewer.pal(11,"RdYlGn"))(nrow(bm_mod))) +
  labs(y="Under/over valuation in %", x="")
Run Code Online (Sandbox Code Playgroud)

然而输出看起来很奇怪.这是酿酒商的问题还是其他错误?

在此输入图像描述

jor*_*ran 5

几点:

正如Nick所说,你不应该bd_mod$用来引用内部的变量aes().指定的全部内容data = bm_mod是让您不必bm_mod$一次又一次地输入.

其次,你的设置尝试fill = pal有点混乱.指定外部的美学aes()意味着您设置为特定值,因此应该仅使用单个值来完成,例如fill = "blue".

你真正想要的是每个x值的不同填充,所以你应该将填充映射country然后设置颜色方案scale_fill_manual.

当你提出这样的问题时,你应该总是提供一个可重复的例子.在这种情况下,这将是非常容易的,如下所示:

df <- data.frame(x = letters,y = runif(26))

ggplot(df,aes(x = x,y = y)) + 
    geom_bar(aes(fill = x),stat = "identity",show_guide = FALSE) + 
    scale_fill_manual(values = colorRampPalette(brewer.pal(11,"RdYlGn"))(26))
Run Code Online (Sandbox Code Playgroud)

我习惯于colorRampPalette在你想要使用的brewer调色板中插入颜色.

  • @SWR它没有用,因为你仍然不理解_mapping_和_setting_美学之间的区别.你仍然在设置填充.你需要在`aes()`里面_map_它.注意我的代码如何说'aes(fill = x)`.在`aes()`里面你的`fill = country`? (2认同)

Nic*_*ick 5

这是一个带有虚假数据的示例。正如亨里克指出的那样,你需要fill=V在美学上进行具体说明。然后您需要一块scale_fill_XXXX来指定您要使用的色阶。

require(ggplot2)

set.seed(100)
fake.data = data.frame(country = LETTERS, V = runif(26, -40, 40))
fake.data$country = factor(LETTERS, LETTERS[order(fake.data$V)]) # reorder factors

ggplot(data = fake.data, aes(x = country, y = V, fill = V)) +
  geom_bar(stat = "identity") +
  scale_fill_gradient2(low="red", mid="yellow", high="green") +
  coord_flip() +
  labs(y="Under/over valuation in %", x="")
Run Code Online (Sandbox Code Playgroud)

产生以下情节:

彩色条形图