如何在R中使用Lattice绘制线段或箭头? (来自宽幅数据集)

时间:2017-06-22 10:47:24

标签: r plot ggplot2 lattice

我想创建一个带有分段或箭头的情节。

我们说我有这个玩具示例

temp <- data.frame(posi=c(1,2,3,3,2,1,5), from=c("A", "B", "C", "D", "D", "B", "A"), 
   to=c( "C", "D", "D", "C", "A", "A", "B"))

posi from to
  1    A  C
  2    B  D
  3    C  D
  3    D  C
  2    D  A
  1    B  A
  5    A  B

我想从&#34;来自&#34;定义的点中绘制段或箭头。及其起始位置到&#34;到&#34;和位置+1。

我要用ggplot创建情节

ggplot() + geom_point(data=temp, aes(x=posi, y=from, size=10),show.legend = FALSE) + 
geom_point(data=temp, aes(x=posi+1, y=to, size=10),show.legend = FALSE) + 
geom_segment(data=temp, aes(x=posi, y=from, xend=posi+1, yend=to), 
arrow=arrow(type="closed", angle=10), size=1.5, color="blue") + theme_bw()

但是我想用Lattice做这件事,因为我的真实数据集要大得多(数百万行),格子工作得更快。 我知道我可以减少删除重复项的行数,但那是另一个故事。

我怎么能用格子做到?

我一直在研究,我认为我需要使用panel.segments或lsegments,但事情似乎要复杂得多,而且很难找到例子。

 xyplot(from ~ posi , type="p", col="black",  data=temp, pch=16, 
     panel = function(x, y, ...){  panel.segments(x,y,)  })

我不知道在函数内部或内部面板中写入什么参数。

enter image description here

1 个答案:

答案 0 :(得分:2)

您可以使用以下代码:

Class<? extends Temporal>

产生以下图表:

enter image description here

请告诉我这是否是你想要的。

更新

我发布了一个关于@skan在评论中发现和描述的问题的问题:当一个&#34;极端&#34;级别(如&#34; D&#34;)在public boolean check(Temporal dateFieldToCheck, Temporal minDate, Temporal maxDate, Class<? extends Temporal> type) { if (type == LocalDate.class) { // code for LocalDate (use LocalDate.from() as above) } if (type == LocalDateTime.class) { // code for LocalDateTime (use LocalDateTime.from() as above) } } // convert all objects to LocalDate check(z1, dt, d, LocalDate.class); 中不存在,然后是&#34; D&#34;即使&#34; D&#34;也不会成为图表的一部分。稍后将需要xyplot(from ~ posi , type="p", col="black", data=temp, pch=16, xlim = c(0,7), panel = function(...){ panel.dotplot(x = (temp$posi+1), y = temp$to, col="black", cex=1.4) panel.dotplot(x = temp$posi, y = temp$from, col ="black", cex=1.4) panel.arrows(x0 = temp$posi, y0 = temp$from, x1 = temp$posi+1, y1 = temp$to, lwd=3, col="blue", ) } ) 。可以找到@Konn回答的问题 here

据我了解,我们需要temp$from temp$to,我们需要在factor调用中添加指定ordered的代码。在这个例子中,我们用&#34;极端&#34;显示全套。来自&#34;来自&#34;并作为极端&#34; D&#34;缺席:完整代码是:

drop.unused.levels = FALSE

产生以下照片:

enter image description here

enter image description here

我想我们已经解决了这个问题。