ggplot2'de coord_fixed()
koordinat sistemi, verilerin en boy oranının belirli bir değerde tutulmasını sağlar. Böylece, veri şeklini korumak için panelin şekli değişir. Bu arada coord_flip()
arsa eksenlerini değiştirir. Bununla birlikte, ggplot2'deki bir çizim tam olarak bir koordinat sistemine sahip olmalıdır, bu nedenle bu işlevler birleştirilemez.ggplot2: Eksenleri çevirin ve veri en boy oranını koruyun
Sorum şu:
orada x ve y eksenleri ile bir koordinat sisteminde sonuçlanan
coord_fixed()
vecoord_flip()
davranışlarını birleştirmek için bir yol var alışverişinde ve verilerin sabit bir boy oranı mu?
Bu popüler bir soru, ancak yaygın cevap yanlış ise:
- How do I to fix aspect ratio and apply coord_flip in ggplot2?
- Flipping and maintaining aspect ratio of a chart in ggplot2
çok önerilen cevap theme(aspect.ratio = 1)
yerine coord_fixed()
birlikte coord_flip()
kullanmaktır . Ancak, ggplot2 belgelerine göre, bu ayar "panelin en boy oranı" anlamına gelir. Böylece, panelin şeklini korumak için veriler şekil değiştirecektir.
Bunun, şu anda ggplot2'de bulunmayan bir özellik olduğundan şüpheleniyorum. Ancak daha da önemlisi, bu soruya doğru bir çözüm veya en azından yanıtın belgelenmesi gerektiğini düşünüyorum. Sorunun
Hızlı minimal örnek:
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)
Şerefe, çözümün şu anda mevcut olan en iyi olduğunu düşünüyorum. (Ama ilk cümleninizle ilgili olarak - 'tema' çözümü yanlıştır, yeterlilik gerekli değildir. Uzamsal verilere bakıyorum ve verilerin gerçek biçiminde gösterilip gösterilmediğini bilmek çok önemlidir. zıt etkiyi ve veriyi daha fazla bozar.) – mb7744
@ mb7744 Sadece _many_ insanlar (ama kesinlikle hepsi değil) orijinal çözümün iyi olduğu gerçeğine atıfta bulunuyordum. Seninle aynı fikirde değilim (bu yüzden soruyu cevapladım). – Axeman
Elbette ama aldığım şey, yalnızca farkı fark etmeyen ve arsalarını yanlış yorumlayan insanlar için iyi olabileceğidir. Bu yüzden SO ile ilgili son iki sorunun yanlış kabul edilmiş cevaplara sahip olduğunu düşünüyorum. Ama bu sadece benim nitpicking. Çözümü takdir ediyorum! – mb7744