Графика с использованием R - PullRequest
0 голосов
/ 23 декабря 2018

Я хочу нарисовать multiplot график, используя , и я хочу, чтобы значение по оси X для каждого сайта и различные линии на графике были M, T, L и G, но вв начале кода я получил ошибку, оператор

$ недопустим для атомных векторов

Graphdata <- as.data.frame(multiplot)
par(mfrow=c(4,3))
plot(Graphdata$Sites$A, Graphdata$f, ylim=c(0,16), xlab="Number of years", 
     ylab="Relative density", lwd=2)
lines(Graphdata$Sites$M, type="l", col="blue", lwd=2)
lines(Graphdata$Sites$T, type="l", col="green", lwd=2)
lines(Graphdata$Sites$L, type="l", col="grey", lwd=2)
lines(Graphdata$Sites$G, type="l", col="orange", lwd=2)

, а некоторые из моих данных

Ответы [ 2 ]

0 голосов
/ 01 января 2019

Вы можете присоединиться к своему вызову ggplot с помощью функции facet_wrap и использовать переменную 'MySite' в качестве своей переменной фасетирования

0 голосов
/ 23 декабря 2018

Вам нужно указать следующее:

SiteA<-Graphdata[Graphdata$Sites=="A",]

plot(SiteA$f,SiteA$M)

par(mfrow=c(1,1))

Тем не менее, я фанат tidyverse и думаю, что это даст вам более простое решение.Вам нужно reshape2 ваши данные, хотя gather может подойти. РЕДАКТИРОВАТЬ Вам также необходимо решить, что делать с пропущенными значениями.

library(tidyverse)
Graphdata %>% 
  gather("MySite","MyValue",3:ncol(.)) %>% 
  filter(Sites=="A") %>% 
  ggplot(aes(`f`,MyValue,col=MySite))+geom_point()+geom_line()

Это дает: enter image description here

...