【发布时间】:2020-03-29 18:02:04
【问题描述】:
几周前我发现了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 是否有任何可行的解决方法?有没有其他“简单”的解决方案(除了在半对数坐标中编码椭圆)?
【问题讨论】:
-
ggplot(data = mtcars,aes(hp,disp))+geom_point()+scale_y_continuous(trans = log10_trans(),breaks = c(1,10^10))+geom_ellipse(aes( x0 = 230, y0 = log10(450), a = 40, b = 12, 角度 = -10))
-
@ShirinYavari nope 这根本不起作用,它会产生一个类似于我的第二个图表的图表
-
这个怎么样? ggplot(data = mtcars,aes(hp,disp))+geom_point()+scale_y_continuous(trans = log10_trans(),breaks = c(1,10^10))+geom_ellipse(aes(x0 = 230, y0 = log10( 450), a = log10(80), b = 30, 角度 = -10))
-
@ShirinYavari 不。请在发表评论之前尝试您的答案,如果您认为自己有解决方案,请提出解释性答案
-
这两个问题你见过吗? stackoverflow.com/questions/2397097/…stackoverflow.com/questions/36609476/…,也许这里有一些帮助
标签: r ggplot2 data-visualization ggforce