Próbuję zmienić rozmiar wykresu, aby pasował do mojego dokumentu, ale mam trudności z uzyskaniem kształtu wykresu jako kwadratu.
Przykład:
pdf(file = "./out.pdf", width = 5, height = 5)
p <- ggplot(mydata, aes(x = col1, y = col2))
print(p)
aux <- dev.off()
Chociaż granice x i y są takie same, wynik nie jest kwadratowy. Wydaje mi się, że R sprawia, że otaczający panel jest 5x5 ", ale nie dba o rzeczywisty rozmiar schematu.
Jak mogę rozłożyć moje diagramy?
hjust
pozycji tytułu - spróbujopts(axis.title.y=theme_text(hjust=10))
. Ale niestety wydaje się, że nie. Zobacz groups.google.com/group/ggplot2/browse_thread/thread/…, aby zapoznać się z dyskusją na liście mailingowej ggplot i odpowiedzią @ Baptiste.y=runif(100, 0, 50)
wówczas aspekt wykresu nie jest już kwadratowy.coord_fixed()
powoduje, że skala każdej osi jest równa, tylko się wydaje?Aby zapewnić określone proporcje, np. Kwadrat, użyj
theme(aspect.ratio=1)
.Odpowiedź Andrie'ego nie daje pełnego obrazu, ponieważ przykład dostarcza być może nienaturalnych danych, w których zakres x jest równy zakresowi y. Gdyby jednak dane były:
df <- data.frame( x = runif(100, 0, 50), y = runif(100, 0, 5)) ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed()
wtedy fabuła wyglądałaby tak:
Funkcja koordynacyjna () również ma argument do dostosowania stosunku osi:
Aby działka mogła być kwadratowa z:
ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed(ratio=10)
Ale musisz to dostosować do granic zmiennych lub obszaru wykresu (nie wszystkie granice można dobrze podzielić przez liczby całkowite, jak w tych przykładach).
źródło
Ze względu na kompletność: jeśli chcesz wziąć pod uwagę bardzo różne granice osi:
df <- data.frame( x = runif(100, 0, 5000), y = runif(100, 0, 5)) ratio.display <- 4/3 ratio.values <- (max(df$x)-min(df$x))/(max(df$y)-min(df$y)) plot <- ggplot(df, aes(x=x, y=y)) + geom_point() plot + coord_fixed(ratio.values / ratio.display)
Wynik:
źródło
plot + theme(aspect.ratio=4/3)
? Ggplot może mieć wiele warstw z wieloma zestawami danych, a osie mogą mieć dowolne współczynniki rozszerzania, więc obliczenie stosunku y / x z jednego źródła danych wydaje się dość delikatne.