Как пометить ось несколькими переменными в R ggplot2

У меня есть кадр данных следующим образом:

 Name,Tutor,Test,Score,Percent,school.year
 Mark,Eric,Maths,100,100,2
 Mark,Eric,English,91,91,2
 Sue,Richard,Maths,88,100,5
 Sue,Richard,English,71,80.7,5

Я хотел бы отобразить проценты по оси y и имя по оси x с полосами для каждого теста. Мой код делает график так, как я хотел бы, но метка оси X — это просто имя. Я хотел бы добавить другие переменные (только к метке) по оси x. Так, например, отметьте с помощью 2 полос; 1 по математике и 1 по английскому, на его метке по оси X также написано «отметить» «\n» «Эрик», чтобы мы могли видеть, кто его обучал. Если возможно, я хотел бы добавить несколько дополнительных меток, таких как учебный год. Мой код пока выглядит следующим образом:

 results <- read.csv('results.csv')
 p <- ggplot(results, aes(y=Percent, x=Name, colour=Test, fill=Test)) + 
 geom_bar(stat='identity', position='dodge') + 
 ggtitle('Test Results') + 
 ylab('Percent')

Я могу построить одну переменную как метку оси X, например:

 +scale_x_discrete(labels = results$Score)

либо менять их вручную (хотя бывают проблемы с порядком);

scale_x_discrete(labels = c('Марк \n Эрик', 'Сью \n Ричард' и т. д.))

Есть ли способ добавить другие переменные к x-меткам, в идеале с разрывами строк? Большое спасибо


person user3062260    schedule 11.02.2015    source источник


Ответы (1)


Я предлагаю создать еще один столбец в вашем фрейме данных, который будет содержать метки, а затем использовать его как x:

results$label <- paste(results$Name,results$Tutor,sep='\n')

ggplot(results, aes(y=Percent, x=label, colour=Test, fill=Test)) +
  geom_bar(stat='identity', position='dodge') +
  ggtitle('Test Results') +
  ylab('Percent')

введите здесь описание изображения

person Marat Talipov    schedule 11.02.2015