具有范围值和geom_bar的问题

问题描述 投票:0回答:1

我正在尝试获得堆积的条形图,但是(我认为)问题是,我将y值的范围设置为:

Punkt Tiefe Zersetzungsgrad

JE1 000-050 H10
JE1 050-100 H10
JE1 100-150 H6
JE1 150-200 H6
JE1 200-250 H5
JE1 250-300 Sandmudde
JE1 300-350 Sandmudde
JE1 350-400 Organomudde
JE3 0-50    H10
JE3 50-100  H9
JE3 100-150 H9
JE3 150-200 H8
JE3 200-250 H6
JE3 250-300 H6
JE3 300-350 H6
JE3 350-400 H6
JE3 400-450 Sandmudde

现在,R只是堆积条形而没有将其与“ Tiefe”中的值关联。这些条甚至都不是高度,应该是。看来,R只是在随机地做事。我认为问题在于y值,因为它们是范围而不是奇异值。我尝试了很多不同的事情,通过论坛等进行了搜索,但是却不知道该怎么做。

任何帮助将不胜感激。我的代码:

zer <- read.table("HorizonteAmanda.csv", header = T, sep = ";", dec = ",", comment.char = "#", fileEncoding="UTF-8-BOM")[c(1:17),] 

plot <- ggplot(zer, aes(x = Punkt,y = Tiefe, color = Zersetzungsgrad)) 
plot + geom_bar(stat = "identity")

The image shows the plot, Rstudio is giving me

r ggplot2 geom-bar
1个回答
0
投票

尝试绕过此管道:

  • 修改将“范围”分成两个数字变量的数据:yminymax(请参阅下面的separate(...)调用;]]
  • Punkt var转换为factor,然后转换为numeric(请参见下面的mutate(...)调用波纹管):
    • 计算修改后的xminxmaxPunkt(pm .45);
  • 使用geom_rect(...)代替geom_bar(...)来建立绘图:
    • 位置矩形的中心在1和2;
    • 设置矩形的xminxmax
    • 设置yminymax-有您的深度范围;
    • 根据分解程度填充矩形(您可以考虑其他调色板思想;]]
  • 重新标记x轴以摆脱数字,并使用Punkt var中的唯一值;
  • y轴]的扩展限制,以覆盖从0到500的间隔;
  • 反向y轴
  • ,因此行星表面自然在上方,而更深的层在下方;
  • 如果要摆脱难看的默认灰色背景等,请从theme_few()库中应用ggthemes。>
  • 所以一种可能的解决方案是:

    library(tidyverse)
    library(ggthemes)
    
    dt %>%
      separate(col = Tiefe, into = c('ymin', 'ymax'), sep = '-', convert = T) %>%
      mutate(Punkt = as.numeric(as.factor(Punkt)))  %>%
      ggplot(
        aes(x    = Punkt, 
            xmin = Punkt - .45, 
            xmax = Punkt + .45, 
            ymin = ymin, 
            ymax = ymax, 
            fill = Zersetzungsgrad
            )
        ) +
      geom_rect() +
      scale_x_continuous(breaks = 1:2, labels = unique(dt$Punkt)) +
      expand_limits(y = c(0, 500)) +
      scale_y_reverse(name = 'Tiefe') +
      ggthemes::theme_few()
    

    deepness, darkness

    [例如,修改Zersetzungsgrad var可能是个好主意。在所有H*中添加前导零以将顺序更改为H05H06,...,H10

    数据:

    dt <- read.table(
      text = "
      Punkt Tiefe   Zersetzungsgrad
        JE1 000-050 H10
        JE1 050-100 H10
        JE1 100-150 H6
        JE1 150-200 H6
        JE1 200-250 H5
        JE1 250-300 Sandmudde
        JE1 300-350 Sandmudde
        JE1 350-400 Organomudde
        JE3 0-50    H10
        JE3 50-100  H9
        JE3 100-150 H9
        JE3 150-200 H8
        JE3 200-250 H6
        JE3 250-300 H6
        JE3 300-350 H6
        JE3 350-400 H6
        JE3 400-450 Sandmudde",
      header = T,
      stringsAsFactors = F
    )
    
    © www.soinside.com 2019 - 2024. All rights reserved.