我需要在ggplot2图形中修改y轴的比例:我想以千为单位表示y轴,而不是以单位表示。例如,标签必须为0; 1000; 2,000; 3,000而不是0; 1000000; 2000000; 3000000.
请不要告诉我将数据除以1000!
我的问题与ggplot2 axis transformation by constant factor相同。但是此处提供的解决方案会修改lables
函数的scale_y_continuous
参数,而我需要将此参数设置为comma
。通过这个解决方案,我得到以下休息:0; 1000; 2000年; 3000 ...休息时间表示成千上万而不是数百万,这是一个很好的观点,但我放弃了comma
标签。我想看到1000; 2,000; 3,000而不是1000; 2000年; 3000 ......
因此,修改lables
函数的scale_y_continuous
参数无用。这就是为什么我认为我必须使用trans
函数的scale_y_continuous
参数而不是labels
参数。
有许多与trans
参数匹配的内置转换并解决了scale包中的类似问题(例如,查看log_trans)。所以我尝试用下面的代码构建我自己的相似变换。
library(ggplot2)
var0 <- c(1:100)
var1 <- 1000000*rnorm(100)
homothetic_breaks<- function (n = 5, base = 1000)
{
function(x) {
rng <- (range(x, na.rm = TRUE)/base)
min <- floor(rng[1])
max <- ceiling(rng[2])
if (max == min)
return(base*min)
by <- floor((max - min)/n) + 1
base*seq(min, max, by = by)
}
}
homothetic_trans <- function(base = 1000) {
trans <- function(x) x/base
inv <- function(x) x*base
trans_new(paste0("diviseur_par_", format(base)), trans, inv,
homothetic_breaks(base=base), domain = c(-Inf, Inf))
}
data <- data.frame(var0,var1)
p <- ggplot(data,aes(var0,var1))+geom_path()
p <- p + scale_y_continuous(trans=homothetic_trans,labels = comma)
p
当我运行此代码时,我收到以下消息: “错误:str_c的输入应该是原子矢量”,并且y轴的中断与我运行以下代码时得到的相同:
library(ggplot2)
var1 <- 1000*rnorm(100)
var0 <- c(1:100)
data <- data.frame(var0,var1)
p <- ggplot(data,aes(var0,var1))+geom_path()
p