W ggplot2, układ współrzędnych coord_fixed()
zapewnia zachowanie proporcji danych przy danej wartości. Kształt panelu zmienia się, aby zachować kształt danych. Tymczasem coord_flip()
zamienia osie wykresu. Jednak wykres w ggplot2 musi mieć dokładnie jeden układ współrzędnych, więc tych funkcji nie można łączyć.ggplot2: Odwróć osie i zachowaj proporcje danych
Moje pytanie brzmi:
Czy istnieje sposób na połączenie zachowań
coord_fixed()
icoord_flip()
, w wyniku układu współrzędnych z osi x i y wymieniane i stałą proporcje danych?
Jest to popularne pytanie jednak wspólna odpowiedź jest niepoprawna:
- How do I to fix aspect ratio and apply coord_flip in ggplot2?
- Flipping and maintaining aspect ratio of a chart in ggplot2
Powszechnie sugeruje odpowiedź jest użycie coord_flip()
wraz z theme(aspect.ratio = 1)
zamiast coord_fixed()
. Jednak zgodnie z dokumentacją ggplot2 ustawienie to odnosi się do "współczynnika kształtu panelu". W ten sposób dane zmienią kształt, aby zachować kształt panelu.
Podejrzewam, że jest to funkcja, która obecnie nie istnieje w ggplot2. Ale co ważniejsze, uważam, że należy udokumentować prawidłowe rozwiązanie lub przynajmniej odpowiedź na to pytanie.
Szybkie minimalny przykładem kwestii:
library(ggplot2)
x <- 1:100; data <- data.frame(x = x, y = x * 2)
p <- ggplot(data, aes(x, y)) + geom_point()
p # by default panel and data both fit to device window
p + coord_fixed() # panel changes shape to maintain shape of data
p + theme(aspect.ratio = 1) # data changes shape to maintain shape of panel
p + coord_fixed() + coord_flip() # coord_flip() overwrites coord_fixed()
# popular suggested answer does not maintain aspect ratio of data:
p + coord_flip() + theme(aspect.ratio = 1)
Pozdrawiam, myślę, że to rozwiązanie jest najlepsze, jakie obecnie istnieje. (Ale w odniesieniu do twojego pierwszego zdania - rozwiązanie "tematu" jest po prostu błędne, nie ma potrzeby kwalifikacji.) Patrzę na dane przestrzenne i bardzo ważne jest, aby wiedzieć, czy dane są pokazywane w ich prawdziwej postaci. mają odwrotny skutek i zniekształcają dane dalej.) – mb7744
@ mb7744 Mówiłem tylko o tym, że dla wielu osób (ale na pewno nie dla wszystkich) oryginalne rozwiązanie jest w porządku. Nie zgadzam się z tobą (dlatego odpowiedziałem na pytanie). – Axeman
Oczywiście - ale to, co dostaję, to to, że może to być dobre dla ludzi, którzy nie zauważają różnicy i źle interpretują ich spisek. Myślę, że właśnie dlatego dwa ostatnie pytania na ten temat na temat SO mają nieprawidłowe odpowiedzi. Ale to tylko ja czepiam się. Doceniam twoje rozwiązanie! – mb7744