• R语言
  • 如何自定义parallel图的y-axis

使用common.scale参数可以使y轴表示的是所有sample的总的min/max,但是这样之后,我想对y-axis标记刻度,通过下面这个方法,貌似不行。不知道怎么才能做到,搜索了一下,也没发现好的解决方法。

<br />
parallel(~iris[1:4] | Species, iris,horiz=FALSE,common.scale=TRUE,<br />
scales=list(y=list(at=c(0,2,3))))<br />
</p>

[attachment=216205,969]

打印出来用手画上刻度再扫描进去 。。。

y轴的坐标范围是0到1 ,搞清楚了这点就好办了。

<br />
png("para.png")<br />
parallel(~iris[1:4] | Species, iris,horiz = FALSE,<br />
	common.scale = TRUE, layout = c(3, 1),<br />
	scales = list(x = list(rot = 45),<br />
			     y = list(at = seq(0, 1, 0.1),<br />
				      labels = seq(0, 1, 0.1)))<br />
)<br />
dev.off()</p>
<p>
</p>

[attachment=216218,970]

回复 第3楼 的 wxw.name:

多谢!根据这个,对ylim的极值按比例缩放也行。

下面是Deepayan的回复,思路是一样的:

<br />
parallel(~iris[1:4] | Species, iris,horizon=FALSE,<br />
         ylim = extendrange(range(iris[1:4])),<br />
         scales = list(y = list(at = NULL, labels = NULL)),<br />
         lower = 0, upper = 1)<br />
</p>

修改后的图片:

[attachment=216220,971]

回复 第4楼 的 pengchy:[s:13]学习了,膜拜一下Deepayan!

下面这个把背景的竖线也加上了。

<br />
parallel(~iris[1:4] | Species, iris,horizon=FALSE,<br />
         ylim = extendrange(range(iris[1:4])),<br />
         scales = list(y = list(at = NULL, labels = NULL),x=list(rot=45)),<br />
         lower = 0, upper = 1,<br />
         panel=function(x,y,z,...){<br />
           panel.abline(v=1:4,col="gray90")<br />
           panel.parallel(x,y,z,...)<br />
         })<br />
</p>

[attachment=216223,972]