Как нарисовать несколько линий в диаграмме рассеяния R [дублировать]

Используйте sed для соответствия последней строке файла, который затем добавит новую строку, если она не существует, и пусть она выполняет встроенную замену файла:

sed -i '' -e '$a\' file

Код из этой ссылки stackexchange

Примечание: я добавил пустые одинарные кавычки в -i '', потому что, по крайней мере, в OS X, -i использовал -e в качестве расширения файла для файла резервной копии. Я бы с радостью прокомментировал исходный пост, но мне не хватило 50 баллов. Возможно, это принесет мне немного в этой теме, спасибо.

55
задан Trevor Hickey 8 June 2017 в 19:36
поделиться

8 ответов

Использование фиктивных данных @Arun :) здесь решение lattice:

xyplot(val~x,type=c('l','p'),groups= variable,data=df,auto.key=T)

enter image description here [/g0]

8
ответ дан agstudy 16 August 2018 в 00:05
поделиться

Если ваши данные в широкоформатном формате matplot сделаны для этого и часто забываются о:

 dat <- matrix(runif(40,1,20),ncol=4) # make data
 matplot(dat, type = c("b"),pch=1,col = 1:4) #plot
 legend("topleft", legend = 1:4, col=1:4, pch=1) # optional legend

Существует также дополнительный бонус для тех, кто не знаком с вещами подобно ggplot, что большинство параметрирующих параметров, таких как pch и т. д., одинаковы, используя matplot() как plot(). enter image description here [/g1]

61
ответ дан arekolek 16 August 2018 в 00:05
поделиться
  • 1
    Большое вам спасибо за указание на это! – SirRichie 3 March 2015 в 17:42

Если вы хотите использовать решение ggplot2, вы можете сделать это, если можете сформировать свои данные в этом формате (см. пример ниже)

# dummy data
set.seed(45)
df <- data.frame(x=rep(1:5, 9), val=sample(1:100, 45), 
                   variable=rep(paste0("category", 1:9), each=5))
# plot
ggplot(data = df, aes(x=x, y=val)) + geom_line(aes(colour=variable))

ggplot2_geom_line [/g0]

44
ответ дан Arun 16 August 2018 в 00:05
поделиться

У вас есть правильная общая стратегия для этого, используя базовую графику, но, как было указано, вы, по сути, говорите R, чтобы выбрать случайный цвет из набора по 10 для каждой строки. Учитывая это, неудивительно, что вы будете иногда получать две строки одного цвета. Вот пример использования базовой графики:

plot(0,0,xlim = c(-10,10),ylim = c(-10,10),type = "n")

cl <- rainbow(5)

for (i in 1:5){
    lines(-10:10,runif(21,-10,10),col = cl[i],type = 'b')
}

enter image description here [/g0]

Обратите внимание на использование функции type = "n" для подавления всех графиков в исходном вызове для настройки окно и индексирование cl внутри цикла for.

25
ответ дан joran 16 August 2018 в 00:05
поделиться

Вот пример кода, который включает в себя легенду, если это интересно.

# First create an empty plot.
plot(1, type = 'n', xlim = c(xminp, xmaxp), ylim = c(0, 1), 
     xlab = "log transformed coverage", ylab = "frequency")

# Create a list of 22 colors to use for the lines.
cl <- rainbow(22)

# Now fill plot with the log transformed coverage data from the
# files one by one.
for(i in 1:length(data)) {
    lines(density(log(data[[i]]$coverage)), col = cl[i])
    plotcol[i] <- cl[i]
}
legend("topright", legend = c(list.files()), col = plotcol, lwd = 1,
       cex = 0.5)
1
ответ дан Samuel-Rosa 16 August 2018 в 00:05
поделиться

В одной и той же диаграмме можно рисовать более одной строки с помощью функции lines()

# Create the data for the chart.
v <- c(7,12,28,3,41)
t <- c(14,7,6,19,3)

# Give the chart file a name.
png(file = "line_chart_2_lines.jpg")

# Plot the bar chart.
plot(v,type = "o",col = "red", xlab = "Month", ylab = "Rain fall", 
   main = "Rain fall chart")

lines(t, type = "o", col = "blue")

# Save the file.
dev.off()

OUTPUT

6
ответ дан Shafiq 16 August 2018 в 00:05
поделиться

В дополнение к [j0] @ joran's , используя базовую функцию plot с петлей for, вы также можете использовать base plot с lapply:

plot(0,0,xlim = c(-10,10),ylim = c(-10,10),type = "n")

cl <- rainbow(5)

invisible(lapply(1:5, function(i) lines(-10:10,runif(21,-10,10),col = cl[i],type = 'b')))
  • Здесь функция invisible просто служит для предотвращения создания lapply вывода в вашей консоли (поскольку все, что мы хотим, это рекурсия, предоставляемая функцией, а не список).

Как вы можете видеть, он дает тот же результат, что и при использовании подхода цикла for.

Итак, почему lapply?

Хотя было показано, что lapply работает быстрее / лучше, чем for в R (например, см. здесь , хотя см. здесь для экземпляра, где это не так), в этом случае он примерно примерно одинаково:

. Увеличение числа строк до 50000 для подходов lapply и for заняло мою систему 46.3 и 46.55 секунд соответственно.

  • Итак, хотя lapply был чуть быстрее, это было пренебрежимо. Эта разница в скорости может пригодиться при более крупном / более сложном графике, но, если честно, 50000 строк, вероятно, довольно хороший потолок ...

Итак, ответ на вопрос «почему lapply ? ": это просто альтернативный подход, который работает одинаково. :)

1
ответ дан theforestecologist 16 August 2018 в 00:05
поделиться

Я знаю, его старый пост, чтобы ответить, но, как я натолкнулся на поиск той же записи, кто-то еще может сюда поменять

Добавив: цвет в функции ggplot, я мог бы достичь линий с разными цветами, относящимися к группе, присутствующей на графике.

ggplot(data=Set6, aes(x=Semana, y=Net_Sales_in_pesos, group = Agencia_ID, colour = as.factor(Agencia_ID)))    

и

geom_line() 

Line Graph with Multiple colors [/g0]

2
ответ дан WhiZTiM 16 August 2018 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: