R中不同距离度量(2D)的单位球体
我试图在R中为不同的距离度量(2D)绘制单位球体 我想想象一下L_0.1,L_0.5,L_1,L_2,L_4,L_10,L_无穷大 我希望在R中做如下的事情,但要有更多的指标 下面的R代码是我的尝试R中不同距离度量(2D)的单位球体,r,plot,graph,R,Plot,Graph,我试图在R中为不同的距离度量(2D)绘制单位球体 我想想象一下L_0.1,L_0.5,L_1,L_2,L_4,L_10,L_无穷大 我希望在R中做如下的事情,但要有更多的指标 下面的R代码是我的尝试 ################ Different metrics ################## fun <- function(x,p=.5){ (abs(x)^.5)} fun1 <- function(x,p=.5){ (2-abs(x)^.5)} fun2
################ Different metrics ##################
fun <- function(x,p=.5){
(abs(x)^.5)}
fun1 <- function(x,p=.5){
(2-abs(x)^.5)}
fun2 <- function(x,p=.1){
(abs(x)^.1)}
fun3 <- function(x,p=.1){
(2-abs(x)^.1)}
fun4 <- function(x,p=1){
(abs(x)^1)}
fun5 <- function(x,p=1){
(2-abs(x)^1)}
fun6 <- function(x,p=2){
(abs(x)^2)}
fun7 <- function(x,p=2){
(2-abs(x)^2)}
fun8 <- function(x,p=4){
(abs(x)^4)}
fun9 <- function(x,p=4){
(2-abs(x)^4)}
fun10 <- function(x,p=10){
(abs(x)^10)}
fun11 <- function(x,p=10){
(2-abs(x)^10)}
plot(fun1,1,-1,ylim=c(2,-0),xlim = c(1,-1))
plot(fun,-1,1,add=T)
plot(fun2,-1,1,add=T)
plot(fun3,-1,1,add=T)
plot(fun4,-1,1,add=T)
plot(fun5,-1,1,add=T)
plot(fun6,-1,1,add=T)
plot(fun7,-1,1,add=T)
plot(fun8,-1,1,add=T)
plot(fun9,-1,1,add=T)
plot(fun10,-1,1,add=T)
plot(fun11,-1,1,add=T)
##########################################################
不同的度量标准##################
乐趣我建议您创建一些通用函数,并通过
lappy
循环将它们直接传递给绘图函数:
例如,您可以为每个p
创建两个通用函数:
## The generic functions for every p and x
fun.generic1 <- function(p, x) {
return(abs(x)^p)
}
fun.generic2 <- function(p, x) {
return(2-abs(x)^p)
}
然后,您可以为要绘制的p
的所有值(包括Inf
)创建一个向量:
并使用简单的lappy
绘制所有参数(结果保存在silent
对象中,以避免阻塞R
控制台):
##绘制所有参数
沉默你是否将距离作为坐标和的n次方的n次方根?@42,我执行了这个公式,但没有求和“sum(abs(x)^p)”,但是,我不知道我是否正确。我想和我在问题中所附的数字有相同的想法。它适合距离的平方和更高的幂。对于L1和L2处的2d球体,是否得到了一个正方形和一个圆形?@42-,是的,但我的球体在原点处没有如上图所示的质心。另外,我需要写2-abs(x)来得到正确的图,我不知道为什么?另外,我不能处理无穷远,那么你需要提高多元差分到pth次方。第二个问题对我来说毫无意义。您的问题是nsot可复制的。您可以将颜色或线型直接添加到曲线
函数中作为附加参数(如果参数过多,您可能需要使用mapply
而不是lappy
循环)。你的第一句话,我不知道你的意思。您提供的代码不会复制所附的绘图。你能编辑代码吗?我的意思是,在一个通用函数中,你模仿我的(abs(x),2-abs(x)),我不知道在问题中生成相同的图是否正确。看看你的图和问题图中的y轴,你的y轴以1为中心,而问题图以0为中心。吉勒姆,根据颜色,当我写例如参数col=“red”或col=c(“red”、…,等等)时,它为所有p指定相同的颜色,但我希望不同的p使用不同的颜色。另外,如果我这样做了,然后使用mapply,代码就不起作用了。
## The curve wrapping function
fun.plot <- function(p) {
curve(fun.generic1(p, x), y = c(-1, 1), add = TRUE)
curve(fun.generic2(p, x), y = c(-1, 1), add = TRUE)
}
## All the p values
p_vector <- c(0.1, 0.5, 1, 2, 4, 10, Inf)
## Empty plot
plot(NULL, ylim = c(2, -0), xlim = c(1, -1), xlab = "x", ylab = "y")
## Plot all the parameters
silent <- lapply(p_vector, fun.plot)
## Wrapping function
plot.everything <- function(p_vector) {
plot(NULL, ylim = c(2, -0), xlim = c(1, -1), xlab = "x", ylab = "y")
lapply(p_vector, fun.plot)
return(invisible())
}
## Plotting the vector directly
plot.everything(c(0.1, 0.5, 1, 2, 4, 10, Inf))