Вставка символов точек данных pch в метки осей в R

Я объединил два набора данных в один график и хотел бы добавить соответствующие символы pch прямо в метки осей. Теперь я знаю, что решения с использованием text() вместо xlab и ylab и векторных шрифтов Hershey (вместо pch=16 и т. д.) даны здесь и здесь, но символы кажутся шаткими. У кого-нибудь есть более "всестороннее" решение?

воспроизводимый пример thinkoholic.com,

par(mar=c(5,5,2,5))

# create data and plot circles
x <- seq(0,5,0.5)

y <- seq(0,5,0.5)
plot(x,y, xlab="", ylab="")

#create random data and add bullets (pch=19)
x <- rnorm(20,2.5)
y <- rnorm(20,2.5)
points(x,y, pch=19)

#add y axis on right side
axis (side = 4)

#create text with symbols
text(-1,2.5,"\\#H0850 y1 axis text", vfont=c("sans serif","plain"), cex=1.25, adj=0.5, srt=90, xpd=TRUE)
text(6,2.5,"\\#H0902 y2 axis text", vfont=c("sans serif","plain"), cex=1.25, adj=0.5, srt=90, xpd=TRUE)
text(2.5,-1,"x axis text", vfont=c("sans serif","plain"), cex=1.25, adj=0.5, srt=0, xpd=TRUE)

person Brian    schedule 11.06.2013    source источник
comment
Один из вариантов, если искажение не разрешимо, состоит в том, чтобы не рисовать оси на исходном графике (графиках) и рисовать график больше, чем нужно, на xlim и ylim. Затем вернитесь и нарисуйте оси, используя text в расширенной области графика, а не на полях, и ваш points будет в пространстве графика, а не на полях, и не должен быть искажен. Однако это своего рода хак, и я уверен, что у кого-то есть идея получше.   -  person Thomas    schedule 11.06.2013
comment
Пожалуйста, приведите воспроизводимый пример. Также не рекомендую этого делать. Хотя я не полностью согласен с мнением о том, что второстепенные оси никогда не следует использовать, я твердо верю, что символы помимо точек данных должны появляться только в легенде.   -  person Roland    schedule 11.06.2013


Ответы (2)


Если вы настаиваете на этом:

par(mar=c(5,5,2,5), xpd=TRUE)

x <- seq(0,5,0.5)
y <- seq(0,5,0.5)
plot(x,y, xlab="", ylab="")


text(-1,2.5,"y axis text", cex=1.25, adj=0, srt=90)
points(-1,2.4)
person Roland    schedule 11.06.2013

Это должно работать:

mtext(paste0("your label text", " (",  intToUtf8(9679), ")"), side = 2, line=2.5)
person user6950677    schedule 10.10.2016