2013-11-17 3 views
0

Я пытаюсь изменить метки фасетов в ggplot2. Я нашел this solutionКак изменить метки грани в ggplot2?

но он не работает для меня. Вот код, я использую

facets <- c("1", "2", "3", "4", "5") 

names <- list(
    '1'="one", 
    '2'="two", 
    '3'="three", 
    '4'="four", 
    '5'="five" 
) 

name_labeller <- function(variable,value){ 
    return(names[value]) 
} 

ggplot(Data[Data$Names %in% facets,], aes(y = y, x = x, group = Names)) + 
    geom_point(shape = 21, size=3, aes(fill=Part)) + 
    scale_fill_manual(values=c("gray90","gray40")) + 
    geom_smooth(method="lm", se= FALSE, size = 1, aes(color = Part, group = Part)) + 
    scale_color_manual(values=c("black","black")) + 
    geom_smooth(method = 'lm', size = 1, colour = 'red', se = FALSE) + 
    scale_x_log10() + 
    scale_y_log10() + 
    theme_bw() + 
    facet_grid(Names ~ ., labeller=name_labeller) 

Когда я запускаю это, фасетки на участке читать «один», «три», «четыре» «[пусто]» и «[пусто]» (то есть последние два грани не обозначены), а не «один» «два», «три», «четыре» и «пять». Кроме того, он назначает «три» граням 2 и «четыре» для трех сторон.

Примечание: Если я изменяю порядок элементов в списке «имена», это влияет на грани, которые помечены. Кажется, есть проблема с name_labeller, не вернувшим правильное слово, или labeller-name_labeller не просит правильной вещи?

Это решение связано выше с 2010 года, возможно, ggplot2 изменился с тех пор? Кто-нибудь знает, как я могу изменить метки фасетов на этом сюжете?

Большое спасибо!

EDIT: Кроме того, я хотел бы отобразить текст курсивом, если это возможно, например. "один" "два" "три" "четыре" "пять". Я собирался заняться этим, как только я мог бы поменять грани, но если кто-то знает, что я не знаю, я буду признателен!

+1

Почему у вас есть facet_grid() и facet_wrap() в одном сюжете ?? Вы должны использовать только один из них. –

+4

Также трудно помочь в вашем конкретном случае, потому что у нас нет данных и не может проверить ваш код. –

+0

Спасибо за ваш отзыв Didzis! Спасибо за то, что проблема связана с тем, что в коде есть facet_grid() и facet_wrap(). Я удалил facet_wrap(), и теперь три ярлыка появляются, но в неправильном аспекте, например. он показывает «один» «три» и «четыре» на трех верхних гранях. Я отредактирую свое оригинальное сообщение, чтобы это отразить. – Thomas

ответ

0

OK Я обнаружил проблему. У меня есть переменная группировки в моем фрейме данных Part, и у этого есть пустые значения для некоторых других данных, которые не были включены в мой график (это другие значения для Data$Names, которые не были включены в мой список под названием facets). По какой-то причине, хотя я не собирал эти данные, пустые значения мешали огранке. Я заполнил эти пустые значения в своих данных, и приведенный выше код теперь работает отлично.

Спасибо Didzis и joran за их комментарии, которые заставили меня продолжать работать, пока я не получил ответ.

+0

Вопрос, который вы связали с собой, имеет ответ, который обсуждает эту проблему. Он является фундаментальным в R при использовании факторов. Когда вы подмножите что-то с коэффициентом, все уровни пройдут для езды, даже если они не отображаются в данных. – joran

Смежные вопросы