[英]Plotting a continuous function as a contour plot
我正在基于我创建的函数创建连续的轮廓/热图。 该图将基于给定的输入以及ax和y极限,然后函数以每0.01个增量的轮廓生成热图。
# var 1 to 3 are given as inputs and do not change.
var1 = 3
var2 = 1
var3 = 0.02
# x and y are additional variables, but they are plotted within a range
# on the chart, xlim = c(0, 24), ylim = c(0, 0.05)
# Given var 1 to 3, and the ranges x and y, plot the result (z) as a heat map and/or contour
result <- function(var1, var2, var3,x, y){
var2 * (1 + (x/12) * var3) * (1 + -var1 * y)
}
# sample output at point x = 12, y = 0.02, and equals 0.9588 in this example.
result(var1 = 3, var2 = 1,var3 = 0.02,
x=12,
y=0.02)
下表显示了我要完成的工作,尽管它是从Web提取的,并且与我提供的数据无关。 我以前没有在轮廓图中使用连续函数。
您只需要正确地构造函数就可以执行几乎所有操作。
result <- function(var1, var2, var3,x, y,d){
ydata=numeric(length(seq(y[1],y[2],d)))
mat=matrix(NA,length(seq(y[1],y[2],d)),length(seq(x[1],x[2],d)))
yy=seq(y[1],y[2],d)
xx=seq(x[1],x[2],d)
for(i in 1:length(xx)){
for(n in 1:length(yy)){
ydata[n]=var2 * (1 + (xx[i]/12) * var3) * (1 + -var1 * yy[n])
}
mat[,i]=ydata
}
return(mat)}
您的image
很奇怪,因此在将其输入image
之前,您需要旋转矩阵。 您可以使用像我在stackoverflow上的某个地方这样的简单函数。
rotate <- function(x) t(apply(x, 2, rev))
那你就准备好了
mydata=result(var1 = 3, var2 = 1,var3 = 0.02,x=c(-1200,1200),y=c(-3005,2008),d=10)
image(rotate(mydata))
par(new=TRUE)
contour(mydata)
我将让该图看起来对您来说很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.