根据另一个变量为绘图创建轴
Creating an Axis for a Plot in terms of another Variable
我正在使用 R.
假设我有以下数据:
#first data set
v2 <- c("A", "B", "C", "D", "E")
types <- as.factor(sample(v2,1000, replace=TRUE, prob=c(0.3, 0.2, 0.1, 0.1, 0.1)))
var <- rnorm(1000, 10, 10)
first = data.frame(v2, types, var)
#second data set
v2 <- c("A", "B", "C", "D", "E")
types <- as.factor(sample(v2,50, replace=TRUE, prob=c(0.3, 0.2, 0.1, 0.1, 0.1)))
var <- rnorm(50, 10000, 10)
second = data.frame(v2, types, var)
#final data
final = rbind(first, second)
#create transformed column
ihs <- function(x) {
y <- log(x + sqrt(x ^ 2 + 1))
return(y)
}
final$ihs = ihs(final$var)
我现在可以像这样绘制上面的数据:
library(ggplot2)
library(ggridges)
ggplot(final, aes(x = ihs, y = types, fill = types)) +
geom_density_ridges() + ggtitle("my plot")
是否可以更改上图的 x 轴,使其使用“var”变量的比例?
这看起来像这样:
“ihs”(反双曲正弦)值通过以下关系对应“var”:
hs <- function(x) {
y <- 0.5*exp(-x)*(exp(2*x)-1)
return(y)
}
例如:
> ihs(70)
[1] 4.941693
> hs( 4.941693)
[1] 69.99997
有人可以告诉我怎么做吗?
谢谢!
参考文献:
您可以通过使用 scale_x_continuous()
设置自定义标签来实现此目的。
library(ggplot2)
# install.packages('ggridges')
library(ggridges)
hs <- function(x) {
y <- 0.5*exp(-x)*(exp(2*x)-1)
return(y)
}
r <- \(x) round(x, 0)
ggplot(final, aes(x = ihs, y = types, fill = types)) +
geom_density_ridges() + ggtitle("my plot") +
scale_x_continuous(labels = r(hs(c(-5, 0, 5, 10))))
注意:如果您使用 R <4.1.0
版本,请使用 function(x)
而不是 \(x)
我正在使用 R.
假设我有以下数据:
#first data set
v2 <- c("A", "B", "C", "D", "E")
types <- as.factor(sample(v2,1000, replace=TRUE, prob=c(0.3, 0.2, 0.1, 0.1, 0.1)))
var <- rnorm(1000, 10, 10)
first = data.frame(v2, types, var)
#second data set
v2 <- c("A", "B", "C", "D", "E")
types <- as.factor(sample(v2,50, replace=TRUE, prob=c(0.3, 0.2, 0.1, 0.1, 0.1)))
var <- rnorm(50, 10000, 10)
second = data.frame(v2, types, var)
#final data
final = rbind(first, second)
#create transformed column
ihs <- function(x) {
y <- log(x + sqrt(x ^ 2 + 1))
return(y)
}
final$ihs = ihs(final$var)
我现在可以像这样绘制上面的数据:
library(ggplot2)
library(ggridges)
ggplot(final, aes(x = ihs, y = types, fill = types)) +
geom_density_ridges() + ggtitle("my plot")
是否可以更改上图的 x 轴,使其使用“var”变量的比例?
这看起来像这样:
“ihs”(反双曲正弦)值通过以下关系对应“var”:
hs <- function(x) {
y <- 0.5*exp(-x)*(exp(2*x)-1)
return(y)
}
例如:
> ihs(70)
[1] 4.941693
> hs( 4.941693)
[1] 69.99997
有人可以告诉我怎么做吗?
谢谢!
参考文献:
您可以通过使用 scale_x_continuous()
设置自定义标签来实现此目的。
library(ggplot2)
# install.packages('ggridges')
library(ggridges)
hs <- function(x) {
y <- 0.5*exp(-x)*(exp(2*x)-1)
return(y)
}
r <- \(x) round(x, 0)
ggplot(final, aes(x = ihs, y = types, fill = types)) +
geom_density_ridges() + ggtitle("my plot") +
scale_x_continuous(labels = r(hs(c(-5, 0, 5, 10))))
注意:如果您使用 R <4.1.0
版本,请使用function(x)
而不是 \(x)