1

I would like to create a stratigraphic plot using tidypaleo. I have several charts (parameters) and I want to plot them with depth as y-axis and different values as x-axes. The final result should look like this:(https://cran.r-project.org/web/packages/tidypaleo/vignettes/strat_diagrams.html)

My Code

Data<- read.csv('Profil.csv',header=TRUE, sep = ";")
ggplot(Data, aes(x = value, y = depth, group=1)) +
  geom_lineh() +
  geom_point() +
  scale_y_reverse() +
  facet_geochem_gridh(vars(ratio), scales = "free_x") +
  labs(x = NULL)+
  labs(y = "Depth (cm)")
> dput(Data)
structure(list(location = c("WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", 
"WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL", "WL"), 
    ratio = c("(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", 
    "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", 
    "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", 
    "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", 
    "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", 
    "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", 
    "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", "(g+m)/(a+x)", 
    "(g+m)/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", 
    "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", 
    "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", 
    "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", 
    "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", "f/(a+x)", 
    "f/(a+x)", "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", 
    "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", 
    "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", 
    "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", 
    "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", "(f+x)/a", 
    "g/g", "g/g", "g/g", "g/g", "g/g", "g/g", "g/g", "g/g", "g/g", 
    "g/g", "g/g", "g/g", "g/g", "g/g", "g/g", "g/g", "g/g", "g/g", 
    "g/g", "g/g", "g/g", "g/g", "g/g", "g/g", "g/g", "g/g", "g/g", 
    "g/g", "g/g", "m/x", "m/x", "m/x", "m/x", "m/x", "m/x", "m/x", 
    "m/x", "m/x", "m/x", "m/x", "m/x", "m/x", "m/x", "m/x", "m/x", 
    "m/x", "m/x", "m/x", "m/x", "m/x", "m/x", "m/x", "m/x", "m/x", 
    "m/x", "m/x", "m/x", "m/x", "(r+f)/(a+x)", "(r+f)/(a+x)", 
    "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", 
    "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", 
    "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", 
    "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", 
    "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", 
    "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", 
    "(r+f)/(a+x)", "(r+f)/(a+x)", "(r+f)/(a+x)", "m/(a+x)", "m/(a+x)", 
    "m/(a+x)", "m/(a+x)", "m/(a+x)", "m/(a+x)", "m/(a+x)", "m/(a+x)", 
    "m/(a+x)", "m/(a+x)", "m/(a+x)", "m/(a+x)", "m/(a+x)", "m/(a+x)", 
    "m/(a+x)", "m/(a+x)", "m/(a+x)", "m/(a+x)", "m/(a+x)", "m/(a+x)", 
    "m/(a+x)", "m/(a+x)", "m/(a+x)", "m/(a+x)", "m/(a+x)", "m/(a+x)", 
    "m/(a+x)", "m/(a+x)", "m/(a+x)"), depth = c(10L, 20L, 30L, 
    40L, 50L, 60L, 70L, 80L, 90L, 100L, 110L, 120L, 130L, 140L, 
    150L, 160L, 170L, 180L, 190L, 200L, 210L, 220L, 230L, 240L, 
    250L, 260L, 270L, 280L, 290L, 10L, 20L, 30L, 40L, 50L, 60L, 
    70L, 80L, 90L, 100L, 110L, 120L, 130L, 140L, 150L, 160L, 
    170L, 180L, 190L, 200L, 210L, 220L, 230L, 240L, 250L, 260L, 
    270L, 280L, 290L, 10L, 20L, 30L, 40L, 50L, 60L, 70L, 80L, 
    90L, 100L, 110L, 120L, 130L, 140L, 150L, 160L, 170L, 180L, 
    190L, 200L, 210L, 220L, 230L, 240L, 250L, 260L, 270L, 280L, 
    290L, 10L, 20L, 30L, 40L, 50L, 60L, 70L, 80L, 90L, 100L, 
    110L, 120L, 130L, 140L, 150L, 160L, 170L, 180L, 190L, 200L, 
    210L, 220L, 230L, 240L, 250L, 260L, 270L, 280L, 290L, 10L, 
    20L, 30L, 40L, 50L, 60L, 70L, 80L, 90L, 100L, 110L, 120L, 
    130L, 140L, 150L, 160L, 170L, 180L, 190L, 200L, 210L, 220L, 
    230L, 240L, 250L, 260L, 270L, 280L, 290L, 10L, 20L, 30L, 
    40L, 50L, 60L, 70L, 80L, 90L, 100L, 110L, 120L, 130L, 140L, 
    150L, 160L, 170L, 180L, 190L, 200L, 210L, 220L, 230L, 240L, 
    250L, 260L, 270L, 280L, 290L, 10L, 20L, 30L, 40L, 50L, 60L, 
    70L, 80L, 90L, 100L, 110L, 120L, 130L, 140L, 150L, 160L, 
    170L, 180L, 190L, 200L, 210L, 220L, 230L, 240L, 250L, 260L, 
    270L, 280L, 290L), value = c("1,13", "1,06", "1,06", "1,1", 
    "0,94", "0,81", "0,94", "1,25", "0,78", "0,96", "0,9", "0,96", 
    "0,72", "0,87", "0,83", "0,78", "0,93", "0,78", "0,8", "0,66", 
    "0,83", "1,88", "1,88", "1,87", "1,8", "2,09", "1,04", "1,56", 
    "1,8", "0,97", "1,81", "1,85", "1,91", "2,21", "1,92", "2,22", 
    "3", "2,3", "2,17", "2,06", "1,35", "1,16", "1,06", "1,8", 
    "1,26", "1,38", "1,32", "1,67", "1,28", "1,46", "2,09", "1,9", 
    "1,72", "1,92", "1,84", "1,61", "1,78", "1,79", "5,31", "6,33", 
    "6,54", "6,87", "7,67", "6,38", "7,37", "9,22", "7,76", "7,64", 
    "7,29", "5,77", "4,54", "4,23", "5,85", "4,7", "5,25", "5,3", 
    "5,7", "4,51", "5,17", "13,27", "10,66", "15,86", "24,39", 
    "11,81", "12,86", "16,71", "11,32", "1,43", "0,9", "0,84", 
    "0,97", "0,84", "1,06", "0,74", "0,75", "0,87", "0,86", "0,73", 
    "1,42", "1,22", "1,11", "0,8", "1,04", "0,84", "1,06", "0,97", 
    "1,07", "1,35", "2,38", "2,21", "2,73", "2,2", "2,06", "0,59", 
    "2,17", "2,32", "0,62", "0,57", "0,54", "0,59", "0,45", "0,44", 
    "0,47", "0,64", "0,41", "0,45", "0,42", "0,6", "0,42", "0,45", 
    "0,41", "0,39", "0,44", "0,44", "0,42", "0,39", "0,54", "1,22", 
    "1,26", "1,26", "1,1", "1,31", "0,34", "1,01", "1,15", "1,31", 
    "2,17", "2,2", "2,3", "2,58", "2,31", "2,57", "3,46", "2,66", 
    "2,55", "2,38", "1,85", "1,57", "1,43", "2,18", "1,62", "1,71", 
    "1,68", "1,99", "1,59", "1,95", "3,28", "2,98", "2,57", "2,7", 
    "2,62", "2,14", "2,42", "2,64", "0,43", "0,35", "0,33", "0,37", 
    "0,28", "0,26", "0,29", "0,39", "0,25", "0,29", "0,26", "0,39", 
    "0,26", "0,27", "0,24", "0,24", "0,27", "0,28", "0,25", "0,23", 
    "0,33", "0,96", "0,94", "1,06", "0,97", "1,02", "0,28", "0,85", 
    "0,89")), class = "data.frame", row.names = c(NA, -203L))

My plot looks like this:(https://i.stack.imgur.com/mOVcR.png) The problem is the x-axis. How can i fix this and make the x-axes readable?

Thanks

Konrad Rudolph
  • 530,221
  • 131
  • 937
  • 1,214
tomsen
  • 11
  • 2
  • Welcome to SO! Looks like your `x` axis variable is a character or factor. Hence you get a break and label for each value. When converting to a numeric is feasible I would try that. For more help please provide [a minimal reproducible example](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) including a snippet of your data or some fake data best shared via `dput()`. – stefan Jun 20 '23 at 09:02
  • 1
    Thanks for your answer. I edited my post and added dput – tomsen Jun 20 '23 at 09:35

1 Answers1

0

The issue is that your value column is a character vector as the numbers use a "," as decimal separator. To fix your issue replace the , by a . and convert to a numeric afterwards:

library(ggplot2)
library(tidypaleo)

Data$value <- as.numeric(gsub(",", ".", Data$value))

ggplot(Data, aes(x = value, y = depth, group = 1)) +
  geom_lineh() +
  geom_point() +
  scale_y_reverse() +
  facet_geochem_gridh(vars(ratio), scales = "free_x") +
  labs(x = NULL) +
  labs(y = "Depth (cm)")

enter image description here

stefan
  • 90,330
  • 6
  • 25
  • 51
  • Thank you very much. It works. But now I get an error after running the code. Is this relevant? – tomsen Jun 20 '23 at 10:05
  • Error in exists(cacheKey, where = .rs.WorkingDataEnv, inherits = FALSE) : invalid first argument Error in assign(cacheKey, frame, .rs.CachedDataEnv) : attempt to use zero-length variable name – tomsen Jun 20 '23 at 10:07
  • 1
    Nop. This is a known issue with the most recent update/version of RStudio. They are already working on a fix. The code works still fine. It's only annoying. (: – stefan Jun 20 '23 at 10:11