2015-10-23 12 views
5

Próbuję zrobić fabułę z dopasowanymi liniami dla dwóch poziomów mojego czynnika (pogrupowanych według kolorów). Kiedyś kształty do grupy inny wariant, ale gdy próbuję dopasować gładsza, I skończyć z 4 linii, a ja wystarczy jeden dwa wiersze w sumie (1 na kolor)Jak uzyskać geom_smooth() zignoruj ​​moje grupowanie kolorów

Oto dane i kod używam:

data <- structure(list(K = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("2s", "4s"), class = "factor"), 
    q = c(0.12, 0.11, 0.1, 0.09, 0.08, 0.07, 0.06, 0.05, 0.04, 
    0.03, 0.02, 0.01, 0.12, 0.11, 0.1, 0.09, 0.08, 0.07, 0.06, 
    0.05, 0.04, 0.03, 0.02, 0.01, 0.12, 0.11, 0.1, 0.09, 0.08, 
    0.07, 0.06, 0.05, 0.04, 0.03, 0.02, 0.01, 0.12, 0.11, 0.1, 
    0.09, 0.08, 0.07, 0.06, 0.05, 0.04, 0.03, 0.02, 0.01), rarity = c(0.907, 
    0.9206, 0.9359, 0.9321, 0.9405, 0.9344, 0.9449, 0.9106, 0.8844, 
    0.8829, 0.8989, 0.798, 0.7464, 0.8225, 0.877, 0.8521, 0.9127, 
    0.9317, 0.9245, 0.9595, 0.9628, 0.9573, 0.9423, 0.9428, 0.5802, 
    0.6414, 0.5123, 0.57, 0.587, 0.5655, 0.5231, 0.517, 0.4694, 
    0.5459, 0.3745, 0.3274, 0.7936, 0.7821, 0.7297, 0.7227, 0.6814, 
    0.6608, 0.6721, 0.6202, 0.5924, 0.5659, 0.5448, 0.6138), 
    metric = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("APD", "ED" 
    ), class = "factor")), .Names = c("K", "q", "rarity", "metric" 
), class = "data.frame", row.names = c(NA, -48L)) 

library(ggplot2) 
ggplot(data=data, aes(x=q, y=rarity, colour=metric, shape=K))+ 
    ggtitle("Relationship")+ 
    xlab("rate of character change")+ 
    ylab("Correlation coefficient to average rarity")+ 
    geom_point()+ 
    geom_smooth(method=lm,se=FALSE) 

Wszelkie porady na ten temat?

+0

Proszę podzielić niektóre dane i kod. –

+0

Udostępnił kod – vahab

+0

Co z niektórymi danymi? –

Odpowiedz

4

Otrzymujesz dwie linie dla każdej grupy, ponieważ jest ona dzielona zarówno przez metric i K. Naprawdę chcesz estetykę stosować tylko do warstwy punktowej, a nie gładkiej później. Lepiej jest po prostu przenieść aes() dla tej nieruchomości.

ggplot(data=data, aes(x=q, y=rarity, colour=metric))+ 
    ggtitle("Relationship")+ 
    xlab("rate of character change")+ 
    ylab("Correlation coefficient to average rarity")+ 
    geom_point(aes(shape=K))+ 
    geom_smooth(method=lm,se=FALSE) 

enter image description here

+0

Key insight: określ kolory/kształty, których nie chcesz, aby były gładkie, aby zobaczyć je w 'geom_points (aes())' zamiast w 'ggplot (aes())' Dzięki MrFlick, vahab! – flies

+0

Zawsze jest również możliwe, aby ponownie określić estetykę jako NULL w geom, które chcesz zignorować, że estetyczne. Na przykład. 'geom_smooth (aes (shape = NULL))'. –

Powiązane problemy