Rozważmy następujący ramkę danych:Spójne kolory legenda z qplot
x = read.table(text = 'Lo Re Pe
1 T 33
1 F 22
1 H 11
2 T 22
2 F 22', header = TRUE)
oraz następujące działki:
qplot(factor(Lo), data=x, geom='bar', fill=Re, weight=Pe,
xlab='L', main='Title', ylab='Pe')
Teraz rozważmy tę ramkę danych:
x <- read.table(text = 'Lo Re Pe
1 D 33
1 K 22
2 D 22
2 K 22', header=TRUE)
z tym samym qplot
komunikat.
Kolory przypisane do każdej wartości Re
nie są zgodne między poletkami, dlatego trudno jest bezpośrednio porównać wykresy.
Jak mogę określić, że Re
wartość T
powinna być zawsze „Red”, na przykład, że Re
wartość F
zawsze powinien być „Blue”, na przykład, tak że komenda qplot
zawsze używa spójnych kolory dla każdego Re
wartość, niezależnie od zawartości ramki danych? Istnieje skończona i znana liczba wartości dla Re
, więc mogłem określić je wszystkie.
Próbowałem następujących gdy ramka danych zawartych wartościami T
, F
i H
:
qplot(factor(Lo), data=x, geom='bar', fill=Re, weight=Pe,
xlab='Loci', main='Title', ylab='Pe',
scale_fill_manual(values=c("Blue","Red","Green"),labels=c("T","F","H")))
ale R zgłasza błąd o nieprawidłowej długości i nie produkują działkę.
Rozwiązanie to pozwoli mi określić kolory dla wszystkich możliwych wartości Re
, nawet jeśli wszystkie te mogą nie być obecne w ramce danych.
Może chcesz przekazać nam powtarzalny przykład? http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –
@ RomanLuštrik: Gotowe. Przerobiono całkowicie pytanie. – SabreWolfy
Myślę, że to będzie działać poprawnie, jeśli tylko użyjesz współczynników o tych samych poziomach i 'scale_colour_discrete (drop = FALSE)' –