对R中的点使用自定义字体
我试图用这些点在R中绘制散点图: (据我所知,W.克利夫兰建议将其分别用于稀疏和密集散点图——我现在称之为“克利夫兰点”。) 最下面的一行应该是直接的,而最上面的一行可以通过进行一些智能的过度绘制(即,在彼此的顶部绘制两个符号)来实现。但在绘制图例时,这还不够 因此,作为解决方案,我设想得到一种包含这10个符号的字体,并指示R在绘制点+图例时使用这种字体。 (现在我突然想到,我可能只是使用对R中的点使用自定义字体,r,plot,ggplot2,R,Plot,Ggplot2,我试图用这些点在R中绘制散点图: (据我所知,W.克利夫兰建议将其分别用于稀疏和密集散点图——我现在称之为“克利夫兰点”。) 最下面的一行应该是直接的,而最上面的一行可以通过进行一些智能的过度绘制(即,在彼此的顶部绘制两个符号)来实现。但在绘制图例时,这还不够 因此,作为解决方案,我设想得到一种包含这10个符号的字体,并指示R在绘制点+图例时使用这种字体。 (现在我突然想到,我可能只是使用text和自定义字体来绘制点。但这并不能解决图例问题。) 我也考虑过使用ggplot2,但这可能最容易通过
text
和自定义字体来绘制点。但这并不能解决图例问题。)
我也考虑过使用ggplot2,但这可能最容易通过比例实现
问题:关于如何使用这些符号(最好是最上面一行)的任何建议,也可以在图例中使用吗?以下是一种使用基本图形和TeachingDemos软件包中的
my.symbols
功能的方法:
library(TeachingDemos)
ms.Cleveland <- function(num.pt = 1, cex=2, ...) {
funs <- list(
open = function(cex, ...)
points(0,0, pch=1, lwd=2, cex=cex, ...),
filled = function(cex, ...)
points(0,0, pch=16, cex=cex, ...),
half = function(cex, ...)
points(0,0, pch=1, lwd=5, cex=cex, ...),
vert = function(cex, ...) {
points(0,0, pch=1, lwd=2, cex=cex, ...)
points(0,0, pch='|', lwd=2, cex=cex/2, ...)
},
dot = function(....) {
points(0,0, pch=1, lwd=2, cex=cex, ...)
points(0,0, pch=16, cex=cex/3, ...)
}
)
funs[[num.pt]](cex, ...)
}
### create size variable for mtcars
sz <- findInterval( mtcars$wt, quantile( mtcars$wt, c(0.2, 0.4, 0.6, 0.8) ) ) + 1
with(mtcars, my.symbols(wt, mpg, ms.Cleveland, num.pt=sz, add=FALSE,
symb.plots=TRUE))
tmp <- legend('topright', pch=1, col=NA, pt.cex=2,
legend=c('Small', 'SMed', 'Medium', 'LMed', 'Large'))
my.symbols( (tmp$rect$left + tmp$text$x)/2, tmp$text$y, ms.Cleveland, num.pt=1:5,
symb.plots=TRUE)
库(教学演示)
克利夫兰女士是否尝试通过Unicode使用它们?哇!哇。我印象深刻,但它需要一些调整。