首页 > 解决方案 > 如何更改已与 R 中的对象一起保存的绘图中某些点的颜色?

问题描述

大家!

我正在处理一个 RMarkdown 文件。我在以前的块中绘制了一些东西并将该图保存在一个对象中,比如'img',因为我想在后续块中对该图做一些事情。如何在不更改任何其他内容的情况下更改“img”中某些点的颜色?或者我可以至少添加一些该颜色的新点来覆盖某些点吗?

我在网上找到的一些代码如下所示,但它对我不起作用。一直说“plot.new 还没有被调用”。作为 R 的初学者,恐怕我不明白为什么plot.new()在这种情况下是相关的。

   img
   points(x,y, col="black", psh=15, cex=2)
   img <- recordPlot()

另外,我不确定这是修改不同块的情节的正确方法。如果有更好的方法,请告诉我!非常感谢!

标签: rplotcolorsr-markdownigraph

解决方案


points()如果您没有设置绘图窗口,则无法调用,这是plot.new()可以做的。通常你不plot.new()直接调用,其他一些函数(例如plot())在做其他事情之前调用它。

因此,这种绘制方式应该可以添加一些要点:

x <- rnorm(100)
y <- rnorm(100)
plot(x, y, col = "red")   # implicit call to plot.new()
img <- recordPlot()

dev.off()                 # clears the display; not needed in RMarkdown
img                       # redraws the first plot
points(rnorm(100), rnorm(100), col = "green") # adds green points

更改点的颜色可能效果不佳,因为抗锯齿意味着旧颜色可能会泄漏。但是这个序列应该将原始点更改为绿色:

img
points(x, y, col = "green")

推荐阅读