2016-06-28 67 views
0

总体目标R:作图表计划

我根据一组规则放置客人在桌附近。在这篇文章中,我的目标是拥有一个方便的功能,可以在R图形上显示这些客人的名字。

输入数据

guests描述了每个客人的在每个表中的位置。请注意,每张桌子的客人人数各不相同。

guests = list(
    table_1 = c("Jack", "Christelle", "Frank", "John S.", "Lucia"), 
    table_2 = c("George", "Amanda", "Alice", "Laura", "John H."), 
    table_3 = c("Jeanette", "Elizabeth", "Remi", "Fabian", "Urs", "Emma"), 
    table_5 = c("Roger", "Marry", "Henrique", "Claire", "Julia"), 
    table_6 = c("Alphonse", "Marie", "Dani", "Rachel") 
) 

Table_positions指示每个表应放置在图上的位置。我在这里假定每个轴从0到10,其中点c(5,5)位于图的中心。的图形

Table_positions = data.frame(
    y_position=c(3,2,3,7,8,7), 
    x_position=c(3,5,7,3,5,7) 
) 

详细我建议表由在由data.frame Table_positions指示的位置为中心的圆圈表示。每个访客的姓名应该在列表guests的后面写在这些表格的周围。

+0

你想通过表或所有表在同一图中绘制表格吗? –

+0

我想你必须玩'plotrix :: draw.circle' –

+0

@ChristopheD。所有表格(和所有名称)在一张图上。它允许有一个房间的代表。这是一个桌面计划 –

回答

4

放置表:

require(plotrix) 
plot(x = Table_positions$x_position 
    ,y= Table_positions$y_position 
    ,xlim=c(0,10),ylim=c(0,10),pch=".") 
draw.circle(Table_positions$x_position, 
     radius=0.5, 
     Table_positions$y_position) 

enter image description here

客人定位:

for(i in 1:length(guests)){ 
    Table<-as.vector(unlist(guests[i])) 
    posTable<-c(Table_positions$x_position[i],Table_positions$y_position[i]) 
    nbGuest<-length(Table) 
    for(j in 1:nbGuest){ 
    text(x=posTable[1]+round(0.5*cos((2*j/nbGuest)*pi),2), 
     y=posTable[2]+round(0.5*sin((2*j/nbGuest)*pi),2), 
     labels=guests[[i]][[j]], 
     cex=0.5) 
    } 

} 

enter image description here

我添加表4与名为 “布拉” 一个生民。
您可以使用cex选项(此处为0.5)指定文本大小。