【问题标题】:Simple Pie Chart from table表格中的简单饼图
【发布时间】:2015-07-22 07:09:11
【问题描述】:

让我们使用一个示例表:

structure(c(2, 8, 3, 4, 1, 2, 3, 5, 4, 7, 6, 4, 1), .Names = c("Mark", "Greg", 
                                          "Sonya", "Monica", "Tiana", "Arra", "Armin", "Hera", "Cyrus", "Pier", "Tina", "Hector", "Markus"))

此数据中的每个名称都分配有编号。我想根据该表创建一个饼图。我想知道有多大一块“蛋糕”属于表中的不同数字。

所以数字 4 重复了 3 次,这意味着它将在这个饼图中占据最大的百分比/块。我们总共有 13 个数字,所以4 代表饼图的 23%。

我可以继续这样计算并手动创建字符,但这不是 R 用户的解决方案。另一个问题是我的数据比给出的例子大得多......

其他问题: 如果您能告诉我如何制作如下图所示的图表,那就太好了:

编辑:

> dput(head(sum_peaks_EOD)
+ )
structure(c(2, 8, 3, 4, 1, 2), .Names = c("AT1G01050", "AT1G01080", 
"AT1G01090", "AT1G01320", "AT1G01470", "AT1G01800"))

【问题讨论】:

  • 你试过pie(data)吗?第二个图表称为条形图barplot(matrix(data))
  • 是的,我试过了,但问题是我不关心表中的名字。问题只是发现从 1 到 8 的数字的频率。所以我的饼图应该只分成8片。
  • 所以你可以使用data而不是table(data)
  • 就是这样。没想到会这么简单……

标签: r charts


【解决方案1】:

对于您的饼图:

pie(table(dat))

对于您的直方图,使用 ggplot2:

dat <- as.data.frame(dat)
dat$factor <-1
ggplot(dat,aes(x=factor,fill=factor(dat))) +
       geom_bar(binwidth=5) +
       coord_flip()

编辑:由于 as.data.frame() 调用的工作方式,您要考虑的列将被称为原始向量的名称。因此,如果您的数据称为 sum_peaks_EOD:

dat <- as.data.frame(sum_peaks_EOD)
dat$factor <-1
ggplot(dat,aes(x=factor,fill=factor(sum_peaks_EOD))) +
           geom_bar(binwidth=5) +
           coord_flip()

【讨论】:

  • 直方图适用于示例数据,但使用我原来的数据时出现此错误:Error in sort.list(y) : 'x' must be atomic for 'sort.list' Have you called 'sort' on a list?
  • 你可能有一个列表而不是一个向量 - 你可以在你的数据上调用 dput() 并编辑问题吗?
  • 是否可以像我在问题中发布的图片那样添加从 0 到 100 的比例?
  • ggplot(dat,aes(x=factor,fill=factor(sum_peaks_EOD))) + geom_bar(binwidth=5,aes(y = (..count..)/sum(..count ..)*100)) + coord_flip()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多