geom_dumbbell 和 coord_trans
geom_dumbbell with coord_trans
我正在尝试在 ggplot 中生成哑铃图,同时还尝试对 x 轴和 y 轴进行对数变换。系统抛出一个我无法理解的错误。寻求帮助。
示例代码如下:
#create the data
df <- data.frame(x = c(1, 2, 3, 100),
xend = c(2, 4, 6, 110),
y = c(1, 2, 3, 100))
#plot the untransformed dumbbell plot
library('ggalt')
ggplot(df, aes(x = x, xend = xend, y = y)) +
geom_dumbbell()
#Try the plot with coordinate transformation
ggplot(df, aes(x = x, xend = xend, y = y)) +
geom_dumbbell() +
coord_trans(x = 'log2', y = 'log2')
抛出错误:
Error in [.data.frame
(df, , c("alpha", "colour", "size", "linetype")) :
undefined columns selected
如果我修改 coord_trans
以便 coord_trans(x = 'log2', xend = 'log2', y = 'log2)
,我得到错误:
Error in coord_trans(x = "log2", xend = "log2", y = "log2") :
unused argument (xend = "log2")
我想要的是与此等价的 geom_dumbbell()
而不是 geom_point()
:
ggplot(df, aes(x = x, y = y)) +
geom_point() +
coord_trans(x = 'log2', y = 'log2')
关于如何让 geom_dumbbell() 与 coord_trans() 一起工作有什么想法吗?
这很奇怪,我不知道为什么它不适用于 geom_dumbbell
。我也不知道 geom_dumbbell
存在!所以这是我多年来使用 geom_linerange
和 geom_point
构建组件的技巧:
ggplot(df, aes(x=x, y = y)) +
geom_linerange(aes(xmin=x, xmax=xend)) +
geom_point() +
geom_point(aes(x=xend)) +
coord_trans(x = 'log2', y = 'log2')
我正在尝试在 ggplot 中生成哑铃图,同时还尝试对 x 轴和 y 轴进行对数变换。系统抛出一个我无法理解的错误。寻求帮助。
示例代码如下:
#create the data
df <- data.frame(x = c(1, 2, 3, 100),
xend = c(2, 4, 6, 110),
y = c(1, 2, 3, 100))
#plot the untransformed dumbbell plot
library('ggalt')
ggplot(df, aes(x = x, xend = xend, y = y)) +
geom_dumbbell()
#Try the plot with coordinate transformation
ggplot(df, aes(x = x, xend = xend, y = y)) +
geom_dumbbell() +
coord_trans(x = 'log2', y = 'log2')
抛出错误:
Error in
[.data.frame
(df, , c("alpha", "colour", "size", "linetype")) :
undefined columns selected
如果我修改 coord_trans
以便 coord_trans(x = 'log2', xend = 'log2', y = 'log2)
,我得到错误:
Error in coord_trans(x = "log2", xend = "log2", y = "log2") :
unused argument (xend = "log2")
我想要的是与此等价的 geom_dumbbell()
而不是 geom_point()
:
ggplot(df, aes(x = x, y = y)) +
geom_point() +
coord_trans(x = 'log2', y = 'log2')
关于如何让 geom_dumbbell() 与 coord_trans() 一起工作有什么想法吗?
这很奇怪,我不知道为什么它不适用于 geom_dumbbell
。我也不知道 geom_dumbbell
存在!所以这是我多年来使用 geom_linerange
和 geom_point
构建组件的技巧:
ggplot(df, aes(x=x, y = y)) +
geom_linerange(aes(xmin=x, xmax=xend)) +
geom_point() +
geom_point(aes(x=xend)) +
coord_trans(x = 'log2', y = 'log2')