【问题标题】:Is there a function to rearrange a data frame for plotting in R?是否有重新排列数据框以在 R 中绘图的功能?
【发布时间】:2023-03-04 08:05:05
【问题描述】:

我有一个要通过条形图绘制的数据框。数据框如下所示:

ID Suitability TA Area
1 Limited Suitability Tasman 151
3 Suitable Timaru 222
3 Limited Suitability Timaru 533
4 Suitable Grey 1112
4 Limited Suitability Grey 1234
5 Suitable Gore 5426
# basic plotting
ggplot(TA_area, aes(x = TA, y = Area)) +
  geom_col()

TA_area 指的是df。

数据基于通过重新分类矩阵创建的滑雪场的适用性。我正在努力绘制,因为当我用 Area 绘制 TA 时,它会为“Limited Suitability”和“Suitable”组合区域,因为我想创建两个显示 TA 的“Suitable”区域的图。我将如何创建“有限适用性”和“适用性”的新列,其中每个 TA 的面积值都在其下方。

ID Limited Suitability Suitable TA Area
1 151 NA Tasman 151
3 533 222 Timaru 755
4 1234 1112 Grey 2346
5 NA 5426 Gore 5426

我希望每个类别下都有一个值,然后是区域列中的总和。但由于我是编码和 R 的新手,我不太确定该怎么做。

【问题讨论】:

  • “有限适用性”和“适用性”在同一地块上:aes(x = TA, y = Area, fill=Suitability)。分面图:... + facet_wrap(vars(Suitability), ncol=2)。单独的图:lapply(unique(TA_area$Suitability), function(x) TA_Area %>% filter(Suitability == x) %>% ggplot(aes(x = TA, y = Area)) + geom_col()) 或TA_area %>% group_by(Suitability) %>% group_walk(~ggplot(aes(x = TA, y = Area)) + geom_col())。在没有 MWE 的情况下,所有代码都未经测试。
  • 谢谢!我已经更新了这个问题,因为我认为我不小心复制了+粘贴了第一个表格。现在的问题显示了我想要做什么。

标签: r dataframe area


【解决方案1】:

您可以避免使用来自基本 R 的 barplot 进行繁琐的数据重新转换。

barplot(Area ~ TA + Suitability, dat, beside=TRUE, col=2:5)
legend('topright', legend=sort(unique(dat$TA)), col=2:5, pch=15)


数据

dat <- structure(list(ID = c(1L, 3L, 3L, 4L, 4L, 5L), Suitability = c("Limited Suitability", 
"Suitable", "Limited Suitability", "Suitable", "Limited Suitability", 
"Suitable"), TA = c("Tasman", "Timaru", "Timaru", "Grey", "Grey", 
"Gore"), Area = c(151L, 222L, 533L, 1112L, 1234L, 5426L)), class = "data.frame", row.names = c(NA, 
-6L))

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 2013-07-03
    • 2012-10-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    相关资源
    最近更新 更多