【问题标题】:ggplot - Bar Plot Aesthetics Errorggplot - 条形图美学错误
【发布时间】:2017-08-10 11:50:33
【问题描述】:

我刚刚开始使用 R,我正在尝试绘制一些我制作的虚拟数据,这些数据我已经加载为数据框,但是,经过大量的试验和错误和搜索,我试图制作一些条形图列和以下代码不起作用:

Termcount <- count(dummydata$Term)
ggplot(data=dummydata, aes(x=Term, y=Termcount, fill=Term)) + geom_bar(stat = "identity")

但是,下面的代码确实生成了我想要的情节,但我不明白为什么。

ggplot() + aes(dummydata$Term, fill=dummydata$Term) + geom_bar()

这会生成以下图:

运行第一个代码时,出现以下错误:

不知道如何为 data.frame 类型的对象自动选择比例。默认为连续。 错误:美学必须是长度 1 或与数据 (17) 相同:x、y、填充

如果需要,我可以上传数据,如果有帮助的话。

【问题讨论】:

  • 在第一个中,dummydata 中没有Termcount
  • 请在此处发布(部分)您的 data.frame,以便我们查看它的外观并为您提供更好的帮助 :)

标签: r ggplot2


【解决方案1】:

就像上面的 cmets 所说,ggplot() 希望所有 aes() 参数都是您数据中的列名,dummydata,这就是它给您错误的原因。如果您将“计数”变量添加为新列,它将起作用,如下所示:

library(tidyverse)

data(iris)

dummy <- iris %>% count(Species)

ggplot(data = dummy, aes(Species, y = n, fill = Species)) +
    geom_bar(stat = "identity")

上面的代码本质上是geom_bar() 在第二个示例中“在后台”所做的,因为它默认使用stat = "count"。仅供参考geom_col()stat = "identity"geom_bar() 版本。

顺便说一句,欢迎使用 SO,包含一个小数据示例(通过表格格式或 dput())或使用其中一个内置数据集(如 data(iris))总是一个好主意。示例数据加上示例代码和您的预期输出将使人们能够更好地提供帮助并确保您解决特定问题。

【讨论】:

  • 感谢您的欢迎。因此,如果我不想在数据框中添加计数列,我最好使用在我的原始代码中工作的示例?还是建议添加计数列?发布数据时,上传 CSV 文件是否可接受或 dput() 是否足够?
  • 我认为您的第二个示例将是“最佳”选项。如果您不需要它们,则无需创建新列。 dput() 是可重现数据的黄金标准,因为它捕获了有关您的数据结构的所有内容,因此所有类和因子级别都是相同的。我会尽可能避免使用 csv,因为它需要辅助站点(如 DropBox 或 GoogleDrive)并且需要其他人下载文件(潜在的安全问题和额外的工作)
  • 感谢 Nate 的提示。
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
相关资源
最近更新 更多