我有一组介于pi / 2和-pi / 2之间的值。我想用直方图几何图和极坐标图绘制它们,所以在极坐标的顶部有pi / 2,在底部有-pi / 2。
我正在使用的数据文件:https://www.dropbox.com/s/i9npm6whxi9ok5d/ellipse_df.csv?dl=0
for ( i=n; i>0; i-- )
{
int index = linearSearch(seq,i,n);
int height = bricks[index];
for ( j=0; j<n ; j++ )
{
if( j != index )
{
if( bricks[j] >= height )
{
count += bricks[j] - height;
bricks[j] -= bricks[j] - height;
}
}
}
bricks[index] = 0;
seq[index] = 0;
}
下图中左侧的x轴收缩似乎有些有趣:
答案 0 :(得分:2)
您需要scale_x_continuous(expand = c(0,0))
。 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
,你就可以诊断发生了什么:< / p>
默认的30个分档在数据的上边缘留下一个,只有很少的观察。通过强制垃圾箱具有一定的宽度并选择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,您必须告诉它显示所有非数据空间。
如果您的下一个问题是:我怎样才能将其显示为半圆形,而左侧没有浪费的空间?我会先发制人地回答它更具挑战性,并将涉及预先计算直方图值并将每个条形角转换为极坐标#34;手动&#34;