首页 文章

R:按条形图分组

提问于
浏览
2

我有一个类似于这个的data.frame

dat <- data.frame(
    elevation =sample(0:300, 500, replace=TRUE),
    classes = sample(1:3, 50, replace=TRUE))

> head(dat)
  elevation classes
1       116       1
2         8       1
3        57       2
4       130       3
5        62       1
6        15       1

我试图按50米的增量按范围对数据进行分组,然后计算同一类的所有值 . 我正在尝试在下图中创建一个如下图所示的血管造影条形图 .

enter image description here

我管理的是将数据分组到范围中,但是我如何计算每个范围的所有项目并区分这些类,以便我可以像上面的例子一样绘制它? class 代表不同的土地利用类型 .

library("data.table")
library("dplyr")

dat$range <- cut(dat$elevation, breaks = seq(0,300,50), include.lowest = T)

head(dat)
  elevation classes     range
1       116       1 (100,150]
2         8       1    [0,50]
3        57       2  (50,100]
4       130       3 (100,150]
5        62       1  (50,100]
6        15       1    [0,50]

1 回答

  • 1

    这样的事怎么样?

    require(ggplot2);
    gg <- ggplot(df, aes(y = elevation, x = range))
    gg <- gg + geom_bar(
        aes(fill = as.factor(classes)),
        stat = "identity",
        position = position_stack(reverse = TRUE));
    gg <- gg + coord_flip();
    

    enter image description here


    样本数据

    df <- read.table(text =
        "  elevation classes     range
    1       116       1 (100,150]
    2         8       1    [0,50]
    3        57       2  (50,100]
    4       130       3 (100,150]
    5        62       1  (50,100]
    6        15       1    [0,50]", header = T, row.names = 1)
    

相关问题