【问题标题】:Plotting in R using plot function使用绘图功能在 R 中绘图
【发布时间】:2017-09-11 17:28:24
【问题描述】:

我正在尝试使用循环绘制一些图表。我现在详细描述。

首先我有一个计算 y 变量的函数(垂直轴称为 effect

effect<- function (x, y){
  exp(-0.35*log(x)
      +0.17*log(y)
      -0.36*sqrt(log(x)*log(y)/100))
}

现在我运行以下代码并使用 par 选项在同一张图中绘制线条。我使用axis=FALSExlab="" 得到一个没有标签的情节。我这样做是为了在每次循环运行并且看起来很难看时不会重新编写我的标签。

for (levels in seq(exp(8), exp(10), length.out = 5)){
  x = seq(exp(1),exp(10), length.out = 20)
  prc= effect(levels,x)
  plot(x, prc,xlim = c(0,max(x)*1.05), ylim=c(0.0,0.3),
       type="o", xlab = "",ylab = "",  pch = 16, 
       col = "dark blue", lwd = 2, cex = 1, axes = F)
  label = as.integer(levels) #x variable
  text(max(x)*1.03,max(prc), label )
  par(new=TRUE)
}

最后,我这次使用xlabylab 选项复制绘图命令

plot(x, prc, xlab = "X-label", ylab = "effect", 
     xlim = c(0,max(x)*1.05), ylim = c(0,0.3), 
     type="l", col ='blue')

我在类似的行中有几个其他的图,使用复杂的方程。我有两个问题:

  1. 是否有更好的选择来使用更平滑的线条绘制相同的图?
  2. 有没有更简单的选择,只需几行即可实现相同的效果,我可以将每行的文本(级别)放在右侧,背面为白色背景?

【问题讨论】:

  • 当一个函数/方法已经存在时,命名一个变量是不好的形式。在您的 for 循环中,您使用“级别”作为迭代器。在基础 R 中已经有一个函数levels()。你在第二个问题中要求什么?您是否希望标签“级别”位于右侧的轴上?据我所知,它们已经有白色背景,而您的text() 似乎没有设置背景参数,所以您是在询问位置还是我看不到的色差?

标签: r plot


【解决方案1】:

我认为使用绘图功能既乏味又耗时。所以,我终于用 ggplot2 来绘图了。网上有几个帮助,我用过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-02
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多