【问题标题】:R ggplot and factor(ordered): Why does my box plot gets ordered?R ggplot 和因子(有序):为什么我的箱形图得到有序?
【发布时间】:2014-03-07 11:31:50
【问题描述】:

我想按照当前的顺序绘制这个data.frame的条形图:

df <- data.frame(y=rnorm(5),row.names=c("C","G","D","A","R"))

高度为y,x为行名。

我尝试了以下但没有成功:

df$labels <- row.names(df)
ggplot(df, aes(x = labels, y = y)) + geom_bar(stat = "identity")
ggplot(df, aes(x = factor(labels, ordered = TRUE), y = y)) + geom_bar(stat = "identity")
df <- within(df, labels.factor <- factor(labels, levels=labels, ordered=T))
ggplot(df, aes(x = labels.factor, y = y)) + geom_bar(stat = "identity")

所以我的问题是:为什么我的“订单”会被忽略?我该如何正确地做到这一点?我确定我在这里遗漏了一些明显的东西,因为它是如此基本。提前致谢。

编辑:我在我的 R 会话中犯了一个错误,并监督了一个提议的解决方案确实有效。感谢@jlhoward 和 user2633645。

【问题讨论】:

  • 参见help page for geom_bar上的示例
  • 是的,我看过了;问题是他们正在做直方图,我无法在给定 x 值的情况下扩大他们的解决方案。
  • 您的第三个选项(最后两行代码)在我尝试时有效。这也有效:ggplot(df, aes(x = factor(labels, levels=labels, ordered = TRUE), y = y)) + geom_bar(stat = "identity")
  • 我不知道我是否应该删除这篇文章,因为我显然做错了,但你不会因此获得声誉。所以我就任其发展了。

标签: r ggplot2 r-factor


【解决方案1】:

试试:

df <- data.frame(cbind(x = c("C","G","D","A","R"), y=rnorm(5)), stringsAsFactors = FALSE)
head(df)
df$x <- factor(df$x, levels = c("C","G","D","A","R"))
levels(df$x)
class(df$y)
df$y <- as.numeric(df$y)
ggplot(df, aes(x = x, y = y))  + geom_bar(stat = "identity")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多