首页 > 解决方案 > 如何在 R 中创建没有“填充”的条形图?

问题描述

我有一个包含如下数据的数据框

     Monsoon                 F_Monsoon                         avg_Min_temp_year
  1 Post-Monsoon Autumn    avg_Min_temp                                 21.4
  2 Pre-Monsoon Hot Summer avg_Min_temp                                 22.5
  3 Rainy                  avg_Min_temp                                 25.6
  4 Winter                 avg_Min_temp                                 13.9
  5 Post-Monsoon Autumn    avg_Min_temp_monsoon                         20.7
  6 Pre-Monsoon Hot Summer avg_Min_temp_monsoon                         22.1
  ...
  ...

我正在尝试创建一个没有任何颜色的图(只有黑色和白色)

我的代码如下

plot <- ggplot(plot_final_df, aes(Monsoon, avg_Min_temp_year))+
 geom_bar(stat = "identity", position = "dodge")+
 theme_bw()+
 facet_wrap(~Monsoon)+
 theme(panel.grid = element_blank())+
 xlab("Monsoon")+
 ylab("Avg Min Temp")+
 ggtitle("Avg Min Temp vs Monsoon")

我的情节只显示one bar每个monsoon但它必须显示2 bar (one for avg_Min_temp and for avg_Min_temp_monsoon)

当我在fill里面使用属性时,aes(fill = F_Monsoon)它会显示2 bar for each monsoon颜色,但我需要black and white

任何形式的建议都是值得赞赏的。

标签: rggplot2geom-bar

解决方案


由于您已经按 分面Monsoon,并且您希望每个分面包含两个条(每个用于 中的两个级别F_Monsoon,您应该具有F_Monsoon作为 x 轴:

ggplot(plot_final_df, aes(F_Monsoon, avg_Min_temp_year)) +
 geom_bar(stat = "identity", position = "dodge") +
 facet_wrap(~Monsoon) +
 theme_bw() +
 theme(panel.grid = element_blank()) +
 xlab("Monsoon") +
 ylab("Avg Min Temp") +
 ggtitle("Avg Min Temp vs Monsoon")

在此处输入图像描述

请注意,我必须在您的示例数据中添加两行额外的行才能使其正常工作:

数据

plot_final_df <- structure(list(Monsoon = c("Post-Monsoon Autumn", 
"Pre-Monsoon Hot Summer", 
"Rainy", "Winter", "Post-Monsoon Autumn", "Pre-Monsoon Hot Summer", 
"Rainy", "Winter"), F_Monsoon = c("avg_Min_temp", "avg_Min_temp", 
"avg_Min_temp", "avg_Min_temp", "avg_Min_temp_monsoon", "avg_Min_temp_monsoon", 
"avg_Min_temp_monsoon", "avg_Min_temp_monsoon"), avg_Min_temp_year = c(21.4, 
22.5, 25.6, 13.9, 20.7, 22.1, 24.6, 12.9)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8"))

推荐阅读