Usiłuję wykreślić punkty danych z trzech różnych kolorach dla trzech zakresów wartości. Npggplot geom_point() z kolorami na podstawie konkretnych, dyskretnych wartości
library(ggplot2)
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(colour = qsec))
Powyższy sporządza:
Teraz chciałbym zmodyfikować, tak aby qseq wartości < 17 są czarne, wartości od 17 do 19 są żółty, a wartości powyżej 19 są czerwone. Próbowałem różnych podejść, ale żaden z nich nie wydaje się działać:
Zrobione z here
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(fill = qsec)) + scale_fill_gradientn(colours=c("black","yellow","red"), breaks=c(0,17,19), labels=format(c("0","17","19")))
ta produkuje:
Tak więc, wydaje się poprawna colorbar ale kolory nie są faktycznie stosowane.
Rozwiązania podane w ggplot2 heatmap with colors for ranged values wydają się obiecujące, ale nie mogę ich zmusić do pracy z
geom_point()
.samo dotyczy różnych podobnych stanowiskach, takich jak te wymienione w pasku bocznym.
Zdaję sobie sprawę, będę pewnie musiał użyć jakiegoś dyskretnego skali zamiast scale_fill_gradientn
ale moje próby wykorzystania scale_color_manual()
fail:
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(color = factor(qsec))) +
scale_color_manual(values=c("black", "yellow","red")
Error: Insufficient values in manual scale. 30 needed but only 4 provided.
Domyślam będę jakoś trzeba używać cut()
lub factor()
ale nie potrafię zrozumieć, jak to zrobić. Jakieś sugestie?
Hi @roland Czy ustawienie to scale_color_manual bieg z geom_line? – pacomet
Skala kolorów jest stosowana do wszystkich geomów, dla których mapowany jest kolor. – Roland
Próbowałem dostosować kod do moich danych, ale nie udało mi się. To, czego potrzebuję, to pokolorowanie pojedynczej geom_line() w zależności od wartości y. Ten obraz (https://www.dropbox.com/s/du6fjvr71vybhuu/Rplot.png?dl=0) pokazuje, czego szukam. Może powinienem otworzyć pytanie. – pacomet