我試圖限制ggplot中極坐標圖的“y”軸(即半徑)。我的資料應該在 0 到 90 之間。應該很簡單,但我不明白出了什么問題:
foo <- tibble(theta=c(0,10,20),r=c(10,30,90))
foo %>% ggplot()
geom_point(aes(x=theta,y=r))
coord_polar()
scale_y_continuous(limits=c(0,90),expand=c(0,0),breaks=90)
scale_x_continuous(limits=c(0,360),expand=c(0,0),breaks=c(0,90,180,270))
theme(panel.grid.minor = element_blank(),
panel.grid.major.y = element_line(colour="red"))

如您所見,繪圖擴展到 100 而不是 90。此外,我還有兩個圓圈對應于主要網格元素,一個在 90 處,一個在 100 處。我添加了“主題”陳述句以證明它確實對應于一條主線。另一方面,X 資料根據需要適當縮放并在 360 處“停止”。
如何強制我的圖表從 0 縮放到 90,并在 100 處洗掉這個圓圈?
謝謝 !
uj5u.com熱心網友回復:
ylim我認為這是一個錯誤,或者至少是缺少的功能(可以通過通過in設定硬限制來防止笛卡爾坐標中的等效行為coord_cartesian,這在 中不可用coord_polar)。中沒有外軸線coord_polar,似乎用了一條網格線代替了它,沒有尊重axis.line主題元素。
我能找到的唯一解決方法有點“hacky”,因為您可以將矢量化顏色傳遞給網格線:
foo %>%
ggplot()
geom_point(aes(x = theta, y = r))
coord_polar(clip = "off")
scale_y_continuous(limits = c(0, 90), expand = c(0, 0), breaks = 90)
scale_x_continuous(limits = c(0, 360), expand = c(0, 0),
breaks = c(0, 90, 180, 270))
theme(panel.grid.minor = element_blank(),
panel.grid.major.y = element_line(colour = c("red", NA)))

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/466721.html
