繁体   English   中英

在ggplot2中更改图例属性

[英]Changing legend properties in ggplot2

我是ggplot2的新手,想知道是否有一种简单的方法来更改图例图。 我在我的数据框中添加了一个虚拟变量(在下面的示例中为AEmpty),该变量用于解决ggplot2图中具有一系列且不一致的数据的上一个答案控制列宽度之后不均匀数量的因子的间距和条形宽度。 这似乎是最简单的方法-尽管欢迎发表评论或回答可能提出的替代方法!

因此,在下面的示例中,我得到了一个如下所示的绘图输出。 在此处输入图片说明

我的问题是(1)是否有一种方法可以从“之后”中选择灰度,从而最大化显示的条之间的颜色对比度? (2)在图例中,如何删除AEmpty? 我在这里看到了类似的问题, 如何在ggplot2中手动更改图例中的键标签,但是这里的答案不起作用,因为我已经在其他地方应用了填充功能,而scale_fill_discrete不起作用。

同样,如果有人知道缩放x轴因子的更简便方法,从而消除了对“虚拟”变量的需要,那么将不胜感激。 最终,所需的输出是一个条形图,其中每个条形图具有相等的宽度,并且x轴上的每个“位置”均等间隔,并且仅在键中显示相关因素。

library(ggplot2)
#Create data
when <- as.factor(c(rep(c("Before","After"),each = 3),
      rep("During", 2),"AEmpty"))
site <- as.factor(c(rep(c("a","b","c"), 2),
      "b","a","c"))
mean <- c(6,4.5,4.5,1.75,3.25,2.5,3,0,0)
std_error <- c(2.31,1.04,0.5,0.63,1.70,1.32,1.53,NA,NA)
df <- data.frame(when,site,mean,std_error)
#Plot 
limits <- aes(ymax = mean + std_error, ymin=mean-std_error)
g <- ggplot(df, aes(site,mean,fill=when)) + geom_bar(stat = "identity", position = position_dodge()) + geom_errorbar(limits, width = 0.25, position = position_dodge(width = 0.9)) + scale_fill_grey()
g 

我不确定您的意思是什么:“我已经在其他地方应用了填充功能”。 由于每个图表只能显示一次fill ,因此您可以将breakslabels合并到“其他填充功能”中,此处不再显示。

下面的代码为您提供的示例提供了所需的功能:

library(ggplot2)
# Create data
when <- as.factor(c(rep(c("Before","After"),each = 3),
                    rep("During", 2),"AEmpty"))
site <- as.factor(c(rep(c("a","b","c"), 2),
                    "b","a","c"))
mean <- c(6,4.5,4.5,1.75,3.25,2.5,3,0,0)
std_error <- c(2.31,1.04,0.5,0.63,1.70,1.32,1.53,NA,NA)
df <- data.frame(when,site,mean,std_error)

# Plot 
limits <- aes(ymax = mean + std_error, ymin=mean-std_error)

ggplot(df, aes(site,mean,fill=when)) +
  geom_bar(stat = "identity", position = position_dodge()) +
  geom_errorbar(limits, width = 0.25, position = position_dodge(width = 0.9)) +
  scale_fill_manual(values = c("AEmpty" = "grey1",
                               "After" = "grey15",
                               "Before" = "grey55",
                               "During" = "grey75"),
                    breaks = c("After", "Before", "During"),
                    labels = c("After", "Before", "During")) 

要选择灰色阴影,请查阅此R颜色列表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM