我有一个三元图,我正在这样生成:
library(vcd)
ternaryplot(abs(replicate(3, rnorm(50))), grid=FALSE)
我不喜欢内置网格,所以我禁用了它,但我想绘制一些自己的线条:具体来说我想从三角形的每个点到相对面的中点画一条线(即三条线将我的三角形平分并在中心交叉)我无法弄清楚如何做到这一点。我试过abline()
,但是当我做的时候似乎没有发生。
如何在这个情节上画线?
答案 0 :(得分:6)
试试这个。我通过阅读ternaryplot
的代码收集了大部分内容:
library(vcd)
ternaryplot(abs(replicate(3, rnorm(50))), grid=FALSE)
top <- sqrt(3)/2
xlim <- c(-0.03, 1.03)
ylim <- c(-1, top)
pushViewport(viewport(width = unit(1, "snpc")))
pushViewport(viewport(width = 0.8, height = 0.8, xscale = xlim,
yscale = ylim, name = "plot"))
grid.lines(c(0.75, 0.00), c(0.5 * top, 0))
grid.lines(c(0.25, 1.00), c(0.5 * top, 0))
grid.lines(c(0.50, 0.50), c(1.0 * top, 0))
upViewport(2)
答案 1 :(得分:4)
使用我最近在CRAN上发布的ggtern包,可以实现以下目标:
可以使用以下代码生成:
library(ggtern)
DATA <- data.frame(x = c(1,0,0),
y = c(0,1,0),
z = c(0,0,1),
xend = c(0,.5,.5),
yend = c(.5,0,.5),
zend = c(.5,.5,0),
Series = c("yz","xz","xy"))
ggtern(data=DATA,aes(x,y,z,xend=xend,yend=yend,zend=zend)) +
geom_segment(aes(color=Series),size=1) +
scale_color_manual(values=c("darkgreen","darkblue","darkred")) +
theme_bw() + theme_nogrid() +
theme(legend.position=c(0,1),legend.justification=c(0,1)) +
labs(title = "Sample Midpoint Segments")
答案 2 :(得分:0)
在最新版本ggtern 2.0.1中,现在有几个新的几何形状来制作异常线,这是一个例子:
$(document).on("click", ".row-parent", function(){
var param = $("#inputKeyword").val();
var that = this;
$.ajax({
url: "http://xxxxxxxxx:8040/services/search/"+param,
//data:{ keyword: param},
}).done(function(data){
var data=data.result;
alert(data.length);
var index = $(that).index(data);
alert("Index: "+index);
});
});