使用 ggplot 在对数图中绘制椭圆
ploting an ellipse in log plot with ggplot
几周前我发现了ggforce
,它具有绘制椭圆的强大功能。但我没能在对数图中使用它。这是一个例子:
我想用椭圆圈出这个组
library(ggforce)
library(ggplot2)
ggplot(mtcars)+
geom_point(aes(hp,disp))+
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 30, angle = -10))
但我想在日志图中执行此操作。如果我天真地做
ggplot(mtcars)+
geom_point(aes(hp,disp))+
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 30, angle = -10))+
scale_y_log10()
我得到一个巨大的椭圆:
看起来椭圆参数没有进行对数变换。我可以尝试减少参数轴以获得对数轴上的良好尺寸,例如:
ggplot(mtcars)+
geom_point(aes(hp,disp))+
scale_y_log10()+
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 0.05, angle =0))
有效:
但前提是角度为0,否则两个wxis混在一起得不到我想要的椭圆:
ggplot(mtcars)+
geom_point(aes(hp,disp))+
scale_y_log10()+
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 0.05, angle = -10))
如何在 ggplot 中的对数或对数-对数图中绘制椭圆? ggforce
是否有任何可行的解决方法?是否有任何其他 "simple" 解决方案(除了在半对数坐标中编码椭圆)?
对我来说真正有用的是变换坐标系而不是 y 尺度。
ggplot(mtcars) +
geom_point(aes(hp,disp)) +
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 30, angle = -10)) +
coord_trans(y = "log10")
老实说,使用坐标变换对我来说直觉上是有意义的 - 它类似于 coord_map
在绘制不同形状的多边形时你也在变换坐标 - 但我不知道足够的内部原理解释为什么缩放转换不起作用。
几周前我发现了ggforce
,它具有绘制椭圆的强大功能。但我没能在对数图中使用它。这是一个例子:
我想用椭圆圈出这个组
library(ggforce)
library(ggplot2)
ggplot(mtcars)+
geom_point(aes(hp,disp))+
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 30, angle = -10))
但我想在日志图中执行此操作。如果我天真地做
ggplot(mtcars)+
geom_point(aes(hp,disp))+
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 30, angle = -10))+
scale_y_log10()
我得到一个巨大的椭圆:
看起来椭圆参数没有进行对数变换。我可以尝试减少参数轴以获得对数轴上的良好尺寸,例如:
ggplot(mtcars)+
geom_point(aes(hp,disp))+
scale_y_log10()+
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 0.05, angle =0))
有效:
但前提是角度为0,否则两个wxis混在一起得不到我想要的椭圆:
ggplot(mtcars)+
geom_point(aes(hp,disp))+
scale_y_log10()+
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 0.05, angle = -10))
如何在 ggplot 中的对数或对数-对数图中绘制椭圆? ggforce
是否有任何可行的解决方法?是否有任何其他 "simple" 解决方案(除了在半对数坐标中编码椭圆)?
对我来说真正有用的是变换坐标系而不是 y 尺度。
ggplot(mtcars) +
geom_point(aes(hp,disp)) +
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 30, angle = -10)) +
coord_trans(y = "log10")
老实说,使用坐标变换对我来说直觉上是有意义的 - 它类似于 coord_map
在绘制不同形状的多边形时你也在变换坐标 - 但我不知道足够的内部原理解释为什么缩放转换不起作用。