vlambda博客
学习文章列表

R语言绘制函数/隐函数曲线

R语言是一门不用就忘的语言。现在已经4.0.2了,最初接触它,还是2.1.4版。昨天想用Excel VBA直接在picture上绘图,后来发现VBA里面没有完备的WinAPI,直接画似乎是做不到的,除非引入dll。那感觉太糟糕了。当然这是尝试了不少时间才发现的。我对VBA并不熟。于是看了看R。绘图是R的强项。help和百度之后,觉得Excel确实太过局促。

  1. 一元函数图象绘制,一个curve()即可。顺便试了下latex2exp。
#新开一个窗口,以便自定义字体生效
windows()
#使用latex2exp包,生成带公式的标注
library(latex2exp)
curve(3+6*sin(sqrt(x))^3,#这里改啥是啥
      0, 64, 
      bty="l"
      xlab = "x"
      ylab = "y"
      asp = 1)
#画十字线
abline(h=0, v=3, 
      lty=2, col = "darkgray")
#自定义字体开始
require(showtext)
font_add(family = 'NewRoman',
      regular = 'times.ttf')
#自动使用字体
showtext_auto()

text(0,3, "原点"
       col = rgb(1,0,0))
text(5, 5, 
       TeX("$y=3+6*\\sin ^3 \\sqrt{x}$"),
       family = "NewRoman",
       col = rgb(0,0,1))

  1. 隐函数图象的绘制,其实道理都是用等值线contour()函数来扫描。
    方法一:
x<-y<-seq(-10,20,0.05)
f<-function(x,y){
  x*y-cos(y*cos(x))
  }
z<-outer(x,y,f)
contour(x,y,z)


方法二:

implicitplot<-function(
  f,
  xrange=seq(-10,10,length=1000),
  yrange=seq(-10,10,length=1000))
  {
  z<-outer(xrange,yrange,f)
  contour(xrange,yrange,z,
        levels=0,labels='',
        labcex=.0001)
  }
f<-function(x,y){
  #画个椭圆
  x*x/100.0+y*y/64.0-1
  }
windows()
implicitplot(f)