линейный график ggplot для нескольких строк данных - эквивалент ggplot для matplot - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь создать график с линией для каждого образца, который имеет 24 измеренных значения (т. Е. Данные, которые будут нанесены на график, представлены строками, а не столбцами).Пример моих данных выглядит следующим образом:

structure(c("23.96000", "25.92000", "20.13000", "20.39000", "13.88000", 
            "14.97000", "11.56000", "12.75000", " 8.86000", "10.33000", " 8.96000", 
            " 9.87000", " 7.540000", " 8.160000", " 6.670000", " 7.430000", 
            " 7.060000", " 7.040000", " 6.250000", " 7.200000", " 6.400000", 
            " 6.380000", " 6.70000", " 6.05000", " 5.590000", " 6.310000", 
            " 6.000000", " 5.770000"), .Dim = c(2L, 14L), .Dimnames = list(
              NULL, c("La", "Ce", "Pr", "Nd", "Sm", "Eu", "Gd", "Tb", "Dy", 
                      "Ho", "Er", "Tm", "Yb", "Lu")))

Мне удалось создать нужный график в matplot со следующим кодом:

m <- as.matrix(data)
REE <- c('La','Ce','Pr','Nd','Sm','Eu','Gd','Tb','Dy','Ho','Er','Tm','Yb','Lu')

m2 <- m[,11:24]

#Plotting with matplot

matplot(t(m2), type = "l", log="y", xaxt ="n",ylab="C/C_Chondrite",ylim=c(1,100))
axis(1, at=1:length(REE), labels=REE)

, который генерирует: [REE plot][1]

Я попробовал метод, описанный в этом примере: эквивалент ggplot для matplot с использованием только geom_point () только для проверки функции, однако в настоящее время я получаю график, подобныйэто:

[плохой сюжет] [1]

Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 22 ноября 2018

Вам, вероятно, нужно транспонировать ваши данные, которые в вашем примере отличаются от связанных примеров.

data <- as.data.frame(t(data))  # transpose your data here with `t()`
data$id <- 1:nrow(data) 
library(reshape2)
plot_data <- melt(data,id.var="id")
library(ggplot2)
ggplot(plot_data, aes(x=id, y=value, group=variable, colour=variable)) +
  geom_point() +
  geom_line(aes(lty=variable))

Выход enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...