[英]ggplot coord_polar() plotting between pi/2 and -pi/2 at top and bottom
我有一組介於pi / 2和-pi / 2之間的值。 我想使用直方圖幾何圖形和極坐標圖來繪制它們,因此在極坐標的頂部有pi / 2,在底部有-pi / 2。
我正在使用的數據文件: https : //www.dropbox.com/s/i9npm6whxi9ok5d/ellipse_df.csv?dl=0
ggplot(ellipse_df) +
geom_histogram(aes(theta)) +
coord_polar(start = pi/2, direction = -1)
下圖左側的x軸捏住似乎有些有趣:
您需要scale_x_continuous(expand = c(0,0))
。 ggplot
在所有比例尺的ggplot
自動ggplot
一點,以使繪圖周圍有一個漂亮的邊框,但是在極坐標中,您通常希望它無間隙地環繞。
ggplot(ellipse_df, aes(theta/(pi))) +
geom_histogram(binwidth = .05, colour = "white", boundary = 0) +
scale_x_continuous(expand = c(0,0), breaks = -2:2/4,
labels = c(expression(frac(-pi, 2)),
expression(frac(-pi, 4)),
"0",
expression(frac(+pi, 4)),
expression(frac(+pi, 2)))) +
coord_polar(start = pi/2, direction = -1)
如果你運行這個無參數geom_histogram
並沒有 coord_polar
,可以診斷這是怎么回事:
默認的30個bin在數據的上邊緣留有一個,幾乎沒有觀察到。 通過強制垃圾箱具有一定的寬度並選擇0是中心還是邊緣,可以強制垃圾箱與數據范圍整齊地對齊。
然后,當您將其轉換為極坐標時,它看起來像您想要的,我假設:
為了使-pi / 2到pi / 2成為圓的右半部分,您需要擴展x限制:
... +
scale_x_continuous(expand = c(0,0),
breaks = c(-4, -2:2, 4)/4,
limits = c(-1, 1), # this is the important change
labels = c(expression(-pi),
expression(frac(-pi, 2)),
expression(frac(-pi, 4)), "0",
expression(frac(+pi, 4)),
expression(frac(+pi, 2)),
expression(+pi))) + ...
由於(按pi縮放后),您的數據從-1/2變為1/2,但是您希望該圖將-1顯示為1,因此必須告訴它顯示所有非數據空間。
如果您的下一個問題是:我如何將其顯示為半圓而不在左側浪費空間? 我會先發制人地回答說,這更具挑戰性,將涉及到預先計算直方圖值並將每個條形的角“手動”轉換為極坐標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.