2017-02-20 27 views
2

Я пытаюсь построить легенду в базе R с символами по горизонтали и соответствующими надписями под символами в следующей строке. Легенда будет построена на полях (не включена в данные примера). Есть ли способ использовать графические параметры для решения этой проблемы с помощью функции legend()? В противном случае я попробую текстовые ярлыки, но я предпочитаю более управляемый подход.Как изобразить символы легенды и метки в другой строке в R?

У меня есть этот пример данных:

plot(c(1,2,3,4,5), c(1,2,3,4,5), xlim=c(0,5), ylim=c(0,5), main = "", xlab = "", ylab = "") 

legendEntries <- c(0.05, 0.1, 0.15, 0.2, 0.25) # which values in legend 
legendSizes <- sqrt(legendEntries/pi) * 10 # calculate pch size 
legend(1, 2, title="", horiz = T, legend=legendEntries, col="black", pch=rep(21,5), 
    pt.bg = "#ff166c", pt.cex = legendSizes, bty = "n") 

И хотят, чтобы создать что-то вроде этого:

legend example

Спасибо!

Пол

(редактирование: добавлена ​​картинка в тексте и дополнительной информации)

ответ

0

Вы можете построить отдельно указывает и текст.

Что-то вроде:

# Make the basic plot 
    plot(c(1,2,3,4,5), c(1,2,3,4,5), xlim=c(0,5), ylim=c(0,5), main = "", xlab = "", ylab = "") 
    # set up the legend entries and sizes 
    legendEntries <- c(0.05, 0.1, 0.15, 0.2, 0.25) # which values in legend 
    legendSizes <- sqrt(legendEntries/pi) * 10 # calculate pch size 

# plot the legend points 
    points(y = rep(1, 5), x = seq(3,4, 0.25), pch = 21, cex = sqrt(legendEntries/pi) * 10, 
      bg = "#ff166c") 
# plot the text 
    text(y = rep(0.7, 5), x = seq(3,4, 0.25), 
     labels = legendEntries) 

Для Заговор вне области участка (т.е. на полях), вы можете использовать параметр XPD как xpd = TRUE:

plot(c(1,2,3,4,5), c(1,2,3,4,5), xlim=c(0,5), ylim=c(0,5), main = "", xlab = "", ylab = "") 

legendEntries <- c(0.05, 0.1, 0.15, 0.2, 0.25) # which values in legend 
legendSizes <- sqrt(legendEntries/pi) * 10 # calculate pch size 

points(y = rep(-0.8, 5), x = seq(1,2, 0.25), pch = 21, cex = sqrt(legendEntries/pi) * 10, 
     bg = "#ff166c", xpd = TRUE) 
text(y = rep(-1, 5), x = seq(1,2, 0.25), 
    labels = legendEntries, xpd = TRUE) 
+0

Спасибо, но я стараюсь для построения легенды в полях графика. Кажется, это работает только в области сюжета. Я могу попытаться объединить часть «plot the text» с легендой(), но я надеялся, что существует способ использования графических параметров для ее решения. – user134303

+0

См. Редактирование моего ответа – ira

+0

Ницца, спасибо. Я могу работать с этим. Поскольку легенда, которую я хочу, является довольно простой, мне действительно не нужна функция legend(). – user134303