我在ggplot中创建了一个组的箱线图。因此,我不得不将 Dataframe 从宽格式重塑为长格式。现在我想更改图形中各个图的标签或名称。我使用了函数xlim(labels= c("A", "B")
,它改变了标签,但给了我错误消息,不再计算/显示绘图。
data3 %>%
select(Treatment_A, Treatment_B) %>%
pivot_longer(cols = everything(), names_to = "Variable",values_to = "Value") %>%
ggplot(aes(x= Variable, y = Value, fill = Variable)) +
stat_boxplot(geom= "errorbar", width= 0.5) +
geom_boxplot(fill=c("skyblue2", "gold2"))+
labs(x="Treatment", y="Frequency (total)", title="Treatment comparison")+
theme_minimal()+
theme(axis.title.x = element_text(size =10))+
theme(axis.title.y = element_text(size =10))+
theme(plot.title=element_text(size = 16))+
theme(plot.title = element_text(hjust = 0.5))+
stat_summary(fun = mean, geom = "errorbar", aes(ymax = ..y.., ymin = ..y..),
width = .75,lwd = 0.7, linetype = "dashed", col = "red") +
xlim(labels= c("A", "B"))+ # <- This gives me the error
ylim(0,30)
警告消息:
1: Removed 2730 rows containing missing values (stat_boxplot).
2: Removed 2730 rows containing missing values (stat_boxplot).
3: Removed 2730 rows containing non-finite values (stat_summary).
4: In max(f) : no non-missing arguments to max; returning -Inf
5: Computation failed in `stat_summary()`:
argument must be coercible to non-negative integer
我对R还很陌生,需要我的硕士论文的图形,并感谢任何帮助。非常感谢提前!
1条答案
按热度按时间h43kikqp1#
问题是
xlim
是设置限制的简写,使用xlim(labels= c("A", "B"))
您将x刻度的限制设置为等于c("A", "B")
,即图中仅包括x
值为"A"
或"B"
的观测。所有其他观察都被丢弃,这就是警告所告诉的。要指定标签,请使用
scale_x_discrete
的labels
参数。使用一些假随机示例数据:
首先,通过添加
xlim(labels = c("A", "B"))
来重现您的问题:使用
scale_x_discrete
可以得到所需的结果: