2012-03-31 84 views
3

我知道我可以使用plot命令中的type =“o”参数创建一个带有线和点的绘图。我想要对此有更多的控制 - 我希望能够将“o”绘制为完整点,具有我选择的黑色边框和填充颜色,自定义尺寸和与线条不同的颜色。线条相同,我想让它变得更厚,并且选择颜色。我将如何继续这样做?如何在R中创建一个具有自定义点的绘图?

我发现到现在为止只是一个简单的

plot(y, type= "o") 

这是我的需求太可怜了。

我对使用ggplot不感兴趣,而是使用R的内部图库。 任何帮助表示赞赏。

+2

ŧ仔细看看'?points',包括运行示例('example(“points”)')... – 2012-03-31 17:26:28

+0

谢谢。我会看看?点,但这些例子似乎并没有提供我需要的东西。他们确实有一个坚实的圈子,但没有边界。 – kloop 2012-03-31 17:29:58

+0

仔细观察,在第二个绘图(浅蓝色背景,深蓝色边缘),第三个绘图(点类型21-25;黄色背景,红色边缘) – 2012-03-31 18:02:29

回答

9

你可以使用分层(我没有在任何基础工作更过分的社会研究者我爱ggplot的facet_grid,所以有可能是一个更好的方法),如:

x <- sort(rnorm(25)) 
y <- sort(rnorm(25)) 
z <- as.factor(sample(LETTERS[1:5], 25, r=TRUE)) 

plot(x, y, pch = 19, cex = 1.3) 
par(new = TRUE) 
plot(x, y, pch = 19, cex = 1, col = z) 

哪给你: enter image description here

+0

我建议在第二个绘图之前添加opar < - par(new = TRUE)打电话给'情节',并在(后来防止未来的惊喜)之后参与(opar)。或通过调用'points'(使用相同的参数)将第二个调用替换为'plot'。 – 2012-03-31 18:48:39

+2

分层不需要用彩色填充来获得点。 'bg'和'pch = 21'将会成功。 – jbaums 2012-04-01 05:28:04

13

所有你需要的信息应该存在于?plot?points,正如@BenBolker所建议的。特别是,您希望使用pch=21,并使用bg参数指定背景色,使用cex指定大小,并使用lwd指定线宽。

如果您希望该线条与点边框的厚度不同,则需要首先绘制线条,然后重叠这些点。

例如:

y <- sample(10) 
plot(y, lwd=6, type='l') 
points(y, bg='tomato2', pch=21, cex=3, lwd=3) # tomato2 is a personal fave 

enter image description here

你也可以提供lwdcexcol给点矢量拨打:

plot(y, lwd=6, type='l') 
points(y, bg=rainbow(10), pch=21, cex=seq(1, by=0.2, length.out=10), 
     lwd=seq(2, by=1, length.out=10)) 

enter image description here

相关问题