【发布时间】:2016-08-04 08:00:19
【问题描述】:
我想绘制一个将极坐标直方图(罗盘方位测量值)与极坐标散点图(指示倾角和方位值)相结合的图。例如,这是我想要制作的(source):
让我们忽略直方图的比例尺的绝对值是没有意义的;我们显示直方图以在图中进行比较,而不是读取精确值(这是地质学中的常规图)。直方图 y 轴文本通常不会显示在这些图中。
这些点显示了它们的方位(与垂直的角度)和倾角(与中心的距离)。倾角始终在 0 到 90 度之间,方位角始终在 0 到 360 度之间。
我可以得到一些方法,但我被直方图的比例(在下面的示例中,0-20)和散点图的比例(总是 0-90,因为它是一个下降)之间的不匹配所困扰测量)。
这是我的例子:
n <- 100
bearing <- runif(min = 0, max = 360, n = n)
dip <- runif(min = 0, max = 90, n = n)
library(ggplot2)
ggplot() +
geom_point(aes(bearing,
dip),
alpha = 0.4) +
geom_histogram(aes(bearing),
colour = "black",
fill = "grey80") +
coord_polar() +
theme(axis.text.x = element_text(size = 18)) +
coord_polar(start = 90 * pi/180) +
scale_x_continuous(limits = c(0, 360),
breaks = (c(0, 90, 180, 270))) +
theme_minimal(base_size = 14) +
xlab("") +
ylab("") +
theme(axis.text.y=element_blank())
如果您仔细观察,您会在圆的中心看到一个微小的直方图。
如何使直方图看起来像顶部的图,以便自动缩放直方图,使最高条等于圆的半径(即 90)?
【问题讨论】:
-
也许在 ggplot 之外进行条形高度计算,然后将其重新调用为 0-90 可以解决问题吗?听起来比重新调整倾角要好。
-
您可以使用
geom_histogram(aes(bearing, y = ..count.. * 10)放大10倍。自动缩放有点困难,因为它需要访问直方图中的实际中断,但是像max(dip) / max(hist(bearing, n = 30, plot = FALSE)$counts)这样的东西应该可以。 -
另外,您可能希望交换
geom_point和geom_histogram的顺序,这样前者会出现在顶部。