具有不同R填充的R堆叠分组条形图

Rus*_*ser 3 r stacked bar-chart ggplot2

我有以下代码:

library(ggplot2)

K  <- data.frame(KK=c("30", "30", "30", "30","10", "10", "10", "10"),k=c("10", "8", "5", "2","10", "8", "5", "2"), 
               Precision=c(85.2,87.5,100,100,82.5,83.3,85.2,94.4),     
               Recall=c(73.3,80,100,100,51.4,54.8,61.1,87.9) , 
               Fscore=c(70.8,79.4,100,100,49.1,54.2,62.7,90.3),
               Accuracy=c(82.2,86.7,100,100,63.3,66.7,73.3,93.3)) 
  df2 <- reshape2::melt(K, 1:2)

   ggplot(df2, 
   aes(k, value, fill = variable)) + 
  geom_bar(stat = 'identity', position = 'dodge') +
 theme(legend.position = 'top')
Run Code Online (Sandbox Code Playgroud)

这段代码给了我下面的情节。 在此处输入图片说明

但是,我想得到一个这样的图

在此处输入图片说明

k的每个值(10,8,5,2)应该是一组条形,条形的每种颜色都是度量。此外,KK值30的小节应为实线,并且KK为10。我不清楚。在我的输出中显示K30的值,但与K10合并并与K30剥离后丢失。

Mik*_* H. 5

您可以简单地将两个不同的图层添加到绘图的每个KK值中。不幸的是,ggplot不能很好地处理图案(或根本无法很好地处理图案),请参阅此帖子:如何在ggplot2中添加纹理以填充颜色?

为每个KK值添加不同层的代码为:

ggplot() + 
  geom_bar(data=df2[which(df2$KK==10),], aes(k, value, fill = variable),stat = 'identity',position="dodge") +
  geom_bar(data=df2[which(df2$KK==30),], aes(k, value, fill = variable),stat = 'identity',position="dodge",alpha=0.5) +
  theme(legend.position = 'top')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明