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