ggplot2,ggroc更改轴刻度

时间:2020-04-13 09:07:45

标签: r ggplot2

我一直在尝试使用scale_x_discrete连续更改轴刻度,并且似乎没人能正常工作,我要么收到错误提示,要么它们只是没有变化。我也正在寻找一种方法来“移动”我的两个轴,使我的绘图看起来像所提供的示例。

library(ggplot2)
library(pROC)
library(dplyr)

#some data
data(aSAH)

# store roc object 
roc.ob <- roc(outcome ~ s100b, aSAH, percent = T)

ggroc(roc.ob) + 
coord_fixed()+
geom_abline(slope = 1 ,intercept = 100) + # add identity line
theme(
panel.background = element_blank(), 
axis.title.x = element_text(size =18, face = 'bold'),
axis.title.y = element_text(size =18, face = 'bold'),
panel.border = element_rect(size = 2, fill = NA), 
axis.text.x = element_text(size = 14, face ='bold'),
axis.text.y = element_text(size = 14, face ='bold')) +
xlab('100% - Specificity') +
ylab('100% - Sensitivity')

我知道了:

enter image description here

但是我需要随意更改我的轴,以使其处于概率状态(100-> 1,50-> .5等等),并且我的X轴反转以使100-> 0和0-> 100。我举一个例子,我知道我可以更改轴标题,因此它在技术上是正确的,但是我想知道是否可以更改它们。而且,如果我可以将刻度线放在情节框架的每一侧,那将是很好的:D。 ¿我该如何改变我的坐标轴?

enter image description here

1 个答案:

答案 0 :(得分:0)

是的,您绝对可以更改轴。可能会发出警告,因为ggroc()函数已经使x轴反转了,但这不是问题。

大多数调整都发生在秤上,几点:

  • 如果基础数据位于百分比空间而非概率空间中,则可以通过为labels参数提供自定义函数来更改标签
  • 您可以添加具有标识转换~ .x的辅助轴,以使刻度线出现在顶部和右侧。
  • 您可以将扩展设置为c(0,0),以使轴周围没有空白。我看到您的示例没有它,所以我复制了它。
  • 最后,在主题中,您可以将辅助轴的轴刻度线长度设置为负单位,以使刻度线指向内部,就像您给出的示例一样。

我没有包括所有不必要的主题设置。

ggroc(roc.ob) + 
  coord_fixed()+
  geom_abline(slope = 1 ,intercept = 100) + # add identity line
  scale_x_continuous(trans = "reverse", name = "100% - Specificity",
                     labels = function(x){format(x/100)},
                     sec.axis = sec_axis(~ .x, labels = NULL),
                     expand = c(0,0)) +
  scale_y_continuous(name = "100% - Sensitivity",
                     labels = function(x){format(x/100)},
                     sec.axis = sec_axis(~ .x, label = NULL),
                     expand = c(0,0)) +
  theme_bw() +
  theme(axis.ticks.length = unit(5, "pt"),
        axis.ticks.length.x.top = unit(-5, "pt"),
        axis.ticks.length.y.right = unit(-5, "pt"),
        panel.grid = element_blank())

enter image description here

相关问题