Помогите воспроизвести график из Excel - PullRequest
0 голосов
/ 23 августа 2011

Я хотел бы воспроизвести следующий график:

На горизонтальной оси я хотел бы иметь 8 номеров вопросов, и я хотел бы построить два результата для каждого вопроса.

например

questionnumbers<-c(1,2,3,4,5,6,7,8)

result1<-c(0.2,0.4,0.3,0.6,0.9,0.3,0.4,0.8)

result2<-c(0.4,0.9,0.3,0.1,0.4,0.6,0.3,0.2)

И я хотел бы получить график, подобный этому:

http://dl.dropbox.com/u/22681355/chart.tiff

Желательно, чтобы я знал, как это сделать в qplot, используя ggplot2

Ответы [ 2 ]

4 голосов
/ 23 августа 2011
library(reshape2)
library(ggplot2)

qs <- data.frame(
  questionnumbers = c(1,2,3,4,5,6,7,8),
  result1 = c(0.2,0.4,0.3,0.6,0.9,0.3,0.4,0.8), 
  result2 = c(0.4,0.9,0.3,0.1,0.4,0.6,0.3,0.2)
)

mqs <- melt(qs, id.vars="questionnumbers")

ggplot(mqs, aes(x=questionnumbers, y=value, colour=variable)) + geom_line()

enter image description here


Edited.

Ваш следующий вопрос спрашивает, что отличается от вашего набора различных данных. Ответ в том, что ваша группирующая переменная является непрерывной, а не категориальной. По умолчанию ggplot группирует категориальные переменные вместе. Если ваша группирующая переменная не является категориальной, вам нужно сделать явную переменную группировки в вызове aes в ggplot следующим образом: `aes (..., group = variable, ...):

qs<-data.frame(
    questionnumbers = c("1red","1blue","2red","2blue","3red","3blue","4red","4blue"), 
    Probability=c(0.59,0.60,0.55,0.55,0.60,0.58,0.67,0.68), 
    Chosing.colour=c(0.16,0.21,0.26,0.53,0.84,0.89,0.84,0.947))

mqs <-melt(qs, id.vars="questionnumbers") 
str(mqs)
ggplot(mqs, aes(x=questionnumbers, y=value, group=variable, colour=variable)) + 
  geom_line()

enter image description here

0 голосов
/ 23 августа 2011

В базовой графике это будет ...

questionnumbers<-c(1,2,3,4,5,6,7,8)
result1<-c(0.2,0.4,0.3,0.6,0.9,0.3,0.4,0.8)
result2<-c(0.4,0.9,0.3,0.1,0.4,0.6,0.3,0.2)

plot(questionnumbers, result2, type = 'b', ylim = c(0,0.9), col = 'green', xlab = 'Question Nunbers', ylab = '', main = 'Chart 2', panel.first = grid(nx = NA, ny = NULL))
lines(questionnumbers, result1, col = 'blue', type = 'b')
legend('bottomleft', c('result1','result2'), fill = c('blue', 'green'), cex = 0.8, bty = 'n', horiz = TRUE)

(вы действительно должны предоставить метку оси Y)

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