Как настроить пространство между 2 колонками в легенде сюжета? - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу, чтобы легенда графика для круговой диаграммы представляла собой один график (6 графиков на странице - 5 графиков, 1 легенда).Теперь у меня возникают трудности с настройкой пространства между двумя столбцами.

Я использовал следующий код (методом проб и ошибок):

 #Colors
 colors=c("blue","green","yellow","orange","red","purple","pink","grey")

 legtext <- c("G","G*E","E","Source","Source*E",
 "Table*E","Table*Block*E","Residual Error") 

 #Code for chart
 pie3D(#data for pie
 rooting1,
 #specify labels vector
 #labels=labels,
 #specify labels size
 labelcex=0.9,
 #how much different pies go from each other
 explode=0.1,
 #height of chart
 height=0.1,
 #Main title
 theta=pi/3,
 #Colors
 col=colors
 )

 #Code for legend
 xcoords <- c(0.9,1,1.1,1.2)
 secondvector <- (1:length(legtext))-1
 textwidths <- xcoords/secondvector # this works for all but the first element
 textwidths[1] <- 0

legend(-1, 0.9,ncol=2,
   c("G","G*E","E","Source","Source*E","Table*E","Table*Block*E","Residual Error"), 
   cex = 0.8, 
   fill = colors,
   text.width=textwidths)

Сюжет, который я получаю, таков: я хочу удалитьвертикальные линии и, если возможно, удалите оставшуюся часть графика, так как я хочу только отобразить легенду.

Легенда, которую я получаю:

enter image description here

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 26 сентября 2018

Добавьте bty="n" к своей легенде:

legend(-1, 0.9,ncol=2,
   c("G","G*E","E","Source","Source*E","Table*E","Table*Block*E","Residual Error"), 
   cex = 0.8, 
   fill = colors,
   text.width=textwidths,
   bty="n")

Что касается другого вопроса - как избавиться от самой диаграммы, это займет некоторое время.По сути, вы можете создать пустой график, но с настройками xlim и ylim, а также полей, чтобы было достаточно места для легенды:

par(mar=c(0.1,0.1,0.1,0.1))  # you don't need large margins
# but maybe you need more than 0.1
plot(NA, xlim=c(-1,1), ylim=c(-1,1), axes=FALSE, xlab="", ylab="")
# this makes an empty plot
# you may need to change xlim and ylim (or the x and y of your legend)
# ... so that the legend would start from the left/upper corner
...