问题 重复绘图命令,R中有微小的变化


我在R中制作了一个情节,我想重复所有的命令(比如 plot()legend() 要么 line())为这个情节进行了一些微小的改变。例如,我想将轴设置为对数刻度并更改绘图的标题。

在gnuplot我会使用 replot 命令。

plot ...
set title "The same plot with logarithmic axes"
set logscale
replot

在R中这样的事情是可能的。我想到的唯一一件事(除了手动更改值并重新运行代码行之外)将设置一个函数,该函数会询问可能更改的所有参数由用户。

谢谢你的帮助,

斯文


12611
2018-06-17 17:48


起源



答案:


R使用笔和纸图形模型 - 一旦在设备上绘制了绘图。如果要更改绘图的某些方面,则需要使用对代码所做的更改来重放生成绘图的图形函数调用。

根据您的实际情况,有两种选择:

  1. 如果这只适合您,请在知道R的文本编辑器/ IDE中编写代码,并且可以一次向R发送代码块。这样,生成图形的代码将记录在一个单独的脚本中,您可以将其粘贴到/发送到R每次都会对脚本进行所需的更改。
  2. 如果您经常这样做,那么请自己编写一个包装器绘图函数,该函数封装您想要的绘图代码,但允许您传入参数以更改所需的方面。

Lattice和ggplot2有点不同,因为它们基于网格图形并创建对象 打印时 在设备上制作一个情节。可以操纵该对象来改变绘制的内容,并且使用网格可以将视图推入/移出视口。


12
2018-06-17 18:10



只是为了加入Gavin的建议。格点图有一种更新方法,因此如果保存创建的对象,则可以使用更新功能更新标题等内容。可以使用“+”更新ggplot2对象。 - Greg Snow


答案:


R使用笔和纸图形模型 - 一旦在设备上绘制了绘图。如果要更改绘图的某些方面,则需要使用对代码所做的更改来重放生成绘图的图形函数调用。

根据您的实际情况,有两种选择:

  1. 如果这只适合您,请在知道R的文本编辑器/ IDE中编写代码,并且可以一次向R发送代码块。这样,生成图形的代码将记录在一个单独的脚本中,您可以将其粘贴到/发送到R每次都会对脚本进行所需的更改。
  2. 如果您经常这样做,那么请自己编写一个包装器绘图函数,该函数封装您想要的绘图代码,但允许您传入参数以更改所需的方面。

Lattice和ggplot2有点不同,因为它们基于网格图形并创建对象 打印时 在设备上制作一个情节。可以操纵该对象来改变绘制的内容,并且使用网格可以将视图推入/移出视口。


12
2018-06-17 18:10



只是为了加入Gavin的建议。格点图有一种更新方法,因此如果保存创建的对象,则可以使用更新功能更新标题等内容。可以使用“+”更新ggplot2对象。 - Greg Snow