gpt4 book ai didi

r - 用ggplot在对数图中绘制椭圆

转载 作者:行者123 更新时间:2023-12-04 18:55:18 24 4
gpt4 key购买 nike

我几周前发现了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))

enter image description here

但我想在对数图中做到这一点。如果我天真地做
ggplot(mtcars)+
geom_point(aes(hp,disp))+
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 30, angle = -10))+
scale_y_log10()

我得到一个巨大的椭圆:

enter image description here

看起来椭圆参数未进行对数转换。我可以尝试减少参数轴以在对数轴上获得合适的大小,例如:
ggplot(mtcars)+
geom_point(aes(hp,disp))+
scale_y_log10()+
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 0.05, angle =0))

哪个工作:

enter image description here

但是仅当角度为0时。否则,两个wxi混合在一起,而我无法获得所需的椭圆:
ggplot(mtcars)+
geom_point(aes(hp,disp))+
scale_y_log10()+
geom_ellipse(aes(x0 = 230, y0 = 450, a = 80, b = 0.05, angle = -10))

enter image description here

如何在ggplot的对数或对数对数图中绘制椭圆? ggforce是否有任何可行的解决方法?是否有其他“简单”解决方案(除了在半对数坐标中编码椭圆)?

最佳答案

对我来说真正有效的方法是变换坐标系而不是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")

plot with transformed coordinate system

老实说,使用coord变换对我来说很直观-它类似于 coord_map,在绘制不同形状的多边形时,您也在变换坐标-但是我不了解足够的内部信息来解释为什么比例变换不起作用。

关于r - 用ggplot在对数图中绘制椭圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59184415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com