绘制三角形图上的线条

时间:2013-12-13 03:05:04

标签: r

我有一个三元图,我正在这样生成:

library(vcd)
ternaryplot(abs(replicate(3, rnorm(50))), grid=FALSE)

我不喜欢内置网格,所以我禁用了它,但我想绘制一些自己的线条:具体来说我想从三角形的每个点到相对面的中点画一条线(即三条线将我的三角形平分并在中心交叉)我无法弄清楚如何做到这一点。我试过abline(),但是当我做的时候似乎没有发生。

如何在这个情节上画线?

3 个答案:

答案 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)

enter image description here

答案 1 :(得分:4)

使用我最近在CRAN上发布的ggtern包,可以实现以下目标:

Output

可以使用以下代码生成:

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中,现在有几个新的几何形状来制作异常线,这是一个例子:

solution

$(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);

    });
});