【问题标题】:How to fix "Discrete value supplied to continuous scale" Error in ggplot2如何修复ggplot2中的“提供给连续比例的离散值”错误
【发布时间】:2019-12-18 11:54:17
【问题描述】:

我想将我在 Excel 中计算的平均丰度数据和标准误差数据绘制为ggplot2 中的条形图。当我尝试在gglot2 中绘制我的数据时,我收到了错误Error: Discrete value supplied to continuous scale

我尝试使用逗号分隔格式 (CSV) 直接从 Excel 导入数据,但没有成功,因此我尝试从头开始创建数据框,但出现了相同的错误。

这是产生错误所需的最少代码。首先,我创建列数据。

Parasite <- c("Heligmosomoides", "Heligmosoma", "Trichuris",
              "Mastophorus", "Auncotheca", "Syphacia", "Tapeworms")
Mean <- c(0.166, 0.053, 0.012, 0.012, 0.0072, 0.287, 0.067)
SE <- c(0.060, 0.036, 0.012, 0.012, 0.042, 0.125, 0.026)

然后我创建了数据框。

DF6 <- data.frame(Parasite, Mean, SE)

然后我加载 ggplot2。

library(ggplot2)

然后我使用ggplot2 创建了带有误差线的条形图。

BGPA <- ggplot(DF6, aes(x = DF6$Parasite, y = DF6$Mean)) +
    geom_bar(color="black") +
    geom_errorbar(aes(ymin = DF6$Parasite, ymax = DF6$Mean+DF6$SE))

然后打印出来。

print(BGPA)

这是我得到错误的地方。

Error: Discrete value supplied to continuous scale

【问题讨论】:

  • 在ggplot中,去掉DF6$。你有ymin = Parasite,应该是ymin = Mean - SE
  • 试试这个代码:ggplot(DF6,aes(x=Parasite,y=Mean))+geom_col(color="black")+geom_errorbar(aes(ymin=Mean-SE,ymax=Mean+SE))。一般来说,不要在 ggplot 美学中使用$,因为它们使用的是非标准评估。
  • 谢谢我已经尝试了你们推荐的方法并且成功了!错误也是我使用 geom_bar 而不是 geom_col。太棒了!

标签: r ggplot2 geom-bar


【解决方案1】:

问题是您将ymin 设置为Parasite 而不是Mean-SE。也可以使用geom_barstat = "identity"geom_col

BGPA <- ggplot(DF6, aes(x = Parasite, y = Mean)) +
    geom_bar(color = "black", stat = "identity") +
    geom_errorbar(aes(ymin = Mean-SE, ymax = Mean+SE))
BGPA

【讨论】:

  • 这都是正确的,只是为了美观我删除了负 SE。感谢您让我知道如何正确使用 geom_bar!
  • 不用担心。如果你想删除较低的 SE,那么只需使用ymin = Mean
猜你喜欢
  • 2014-11-14
  • 2023-03-06
  • 2015-11-09
  • 2018-06-20
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
  • 2016-07-26
相关资源
最近更新 更多