Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在ggplot2中复制(和修改)离散轴_R_Ggplot2_Tidyverse - Fatal编程技术网

R 在ggplot2中复制(和修改)离散轴

R 在ggplot2中复制(和修改)离散轴,r,ggplot2,tidyverse,R,Ggplot2,Tidyverse,我想将ggplot2绘图上的左侧Y轴复制到右侧,然后更改离散(分类)轴的记号标签 我已经阅读了的答案,但是可以看出,开关轴位置()功能已从cowplot包中删除(作者引用了ggplot2中的(即将推出的?)本机功能) 我在ggplot2中看到了关于次轴的页面,但是该文档中的所有示例都使用scale\u y\u continuous而不是scale\u y\u discrete。事实上,当我尝试使用离散函数时,我得到了错误: Error in discrete_scale(c("y", "ymin

我想将ggplot2绘图上的左侧Y轴复制到右侧,然后更改离散(分类)轴的记号标签

我已经阅读了的答案,但是可以看出,
开关轴位置()
功能已从
cowplot
包中删除(作者引用了ggplot2中的(即将推出的?)本机功能)

我在ggplot2中看到了关于次轴的页面,但是该文档中的所有示例都使用
scale\u y\u continuous
而不是
scale\u y\u discrete
。事实上,当我尝试使用离散函数时,我得到了错误:

Error in discrete_scale(c("y", "ymin", "ymax", "yend"), "position_d",  : 
unused argument (sec.axis = <environment>)

取离散因子,用数字表示。然后,您可以镜像它,并将刻度重新标记为因子级别,而不是数字

library(ggplot2)

irislabs1 <- levels(iris$Species)
irislabs2 <- c("foo", "bar", "buzz")

ggplot(iris, aes(Sepal.Length, as.numeric(Species))) +
  geom_point() +
  scale_y_continuous(breaks = 1:length(irislabs1),
                     labels = irislabs1,
                     sec.axis = sec_axis(~.,
                                         breaks = 1:length(irislabs2),
                                         labels = irislabs2))
库(ggplot2)

irislabs1取离散因子并用数字表示。然后,您可以镜像它,并将刻度重新标记为因子级别,而不是数字

library(ggplot2)

irislabs1 <- levels(iris$Species)
irislabs2 <- c("foo", "bar", "buzz")

ggplot(iris, aes(Sepal.Length, as.numeric(Species))) +
  geom_point() +
  scale_y_continuous(breaks = 1:length(irislabs1),
                     labels = irislabs1,
                     sec.axis = sec_axis(~.,
                                         breaks = 1:length(irislabs2),
                                         labels = irislabs2))
库(ggplot2)

irislabs1查看
scale\u y\u discrete
的源,没有用于指定次轴的选项/参数。因此,任何解决方案都可能是一个黑客。我在
scale\u y/x\u discrete()
中提出了一个over-at-ggplot来支持
sec.axis
。查看
scale\u y\u discrete
的源代码,没有指定次轴的选项/参数。因此,任何解决方案都可能是一个黑客。我在ggplot中提出了一个over-at-ggplot,以支持
scale\u y/x\u discrete()
中的
sec.axis
。根据ggplot的帮助,“连续变量的默认值是c(0.05,0),离散变量的默认值是c(0,0.6)。”对我来说,expand=c(0,0.6)给出了非常好的结果,刚刚又找到了这个。还是没有更好的办法吗?现在有人知道一个更简单的方法了吗?@TobiO我已经有几年没有关注ggplot的开发了,但是你可以随时向一个好的reprex提交他们github repo的bug报告。我再次发现了这个问题,因为我在寻找解决方案,在完成后的几周才发现了一个功能请求,与您的建议类似:-)Github上实际上存在一个开放的问题,请在那里发表评论,让团队知道您仍然感兴趣:根据ggplot帮助,“对于连续变量,默认值为c(0.05,0),对于离散变量,默认值为c(0,0.6)。”对于我来说,expand=c(0,0.6)给出了非常好的结果,只是再次发现了这一点。还是没有更好的办法吗?现在有人知道一个更简单的方法了吗?@TobiO我已经有几年没有关注ggplot的开发了,但是你可以随时向一个好的reprex提交他们github repo的bug报告。我再次发现了这个问题,因为我在寻找解决方案,在完成后的几周才发现了一个功能请求,与您的建议类似:-)Github上实际上存在一个未解决的问题,请在此处发表评论,让团队知道您仍然感兴趣: