В ggplot
, как правило, наиболее удобно хранить данные в «длинном» формате. Здесь я использую функцию melt
из пакета reshape2
, чтобы преобразовать ваши данные из широкоформатного формата. В зависимости от того, как вы укажете различные теги (размер, форма, цвет и с), появятся соответствующие легенды.
library(ggplot2)
library(reshape2)
# data from the example you were referring to, in a 'wide' format.
x <- seq(-2, 2, 0.05)
ocean <- pnorm(x)
soil <- pnorm(x, 1, 1)
df <- data.frame(x, ocean, soil)
# melt the data to a long format
df2 <- melt(data = df, id.vars = "x")
# plot, using the aesthetics argument 'colour'
ggplot(data = df2, aes(x = x, y = value, colour = variable)) + geom_line()
Edit, задать имя и метки легенды
# Manually set name of the colour scale and labels for the different colours
ggplot(data = df2, aes(x = x, y = value, colour = variable)) +
geom_line() +
scale_colour_discrete(name = "Type of sample", labels = c("Sea water", "Soil"))
Edit2, следующие новые выборочные данные Преобразование данных, предполагая свою организацию от своего обновления , в длинном формате. Опять же, я считаю, что вы делаете свою жизнь ggplot
проще, если вы держите свои данные в длинном формате. Я связываю каждый шаг с простыми примерами данных, которые я использовал в своем первом ответе. Обратите внимание, что существует много альтернативных способов переупорядочения ваших данных. Это один из способов, основанный на небольших (не воспроизводимых) частях ваших данных, которые вы указали в обновлении.
# x <- seq(-2, 2, 0.05)
# Master1MY$Probability
Probability <- 1:100
# ocean <- pnorm(x)
# Master1MY$Stats
Master1MY <- rnorm(100, mean = 600, sd = 20)
# soil <- pnorm(x,1,1)
# Transposon1MY$Stats
Transposon1MY <- rnorm(100, mean = 100, sd = 10)
# df <- data.frame(x, ocean, soil)
df <- data.frame(Probability, Master1MY, Transposon1MY)
# df2 <- melt(df, id.var = "x")
df2 <- melt(df, id.var = "Probability")
# default
ggplot(data = df2, aes(x = Probability, y = value, col = variable)) +
geom_point()
# change legend name and labels, see previous edit using 'scale_colour_discrete'
# set manual colours scale using 'scale_colour_manual'.
ggplot(data = df2, aes(x = Probability, y = value, col = variable)) +
geom_point() +
scale_colour_manual(values = c("red","blue"), name = "Type of sample", labels = c("Master", "Transposon"))
Это может быть стоит добавить этот пример к ggplot ответа на вопрос, связанный выше, а также. Для ответа с 12 upvotes это не очень хороший пример кода 'ggplot'. – joran
Хорошая точка. @Fabs был немного неудачлив, чтобы наткнуться на широкоформатный пример. – Henrik
Спасибо! Но я не думаю, что этот пример будет работать для меня сейчас ... (или, может быть, я не понял этот пример и сожалею об этом) ... Я отредактирую свой вопрос и покажу часть моего примера ... возможно есть простой способ сделать то, что я хочу сделать ... еще раз спасибо! – Fabs