Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对R中的点使用自定义字体_R_Plot_Ggplot2 - Fatal编程技术网

对R中的点使用自定义字体

对R中的点使用自定义字体,r,plot,ggplot2,R,Plot,Ggplot2,我试图用这些点在R中绘制散点图: (据我所知,W.克利夫兰建议将其分别用于稀疏和密集散点图——我现在称之为“克利夫兰点”。) 最下面的一行应该是直接的,而最上面的一行可以通过进行一些智能的过度绘制(即,在彼此的顶部绘制两个符号)来实现。但在绘制图例时,这还不够 因此,作为解决方案,我设想得到一种包含这10个符号的字体,并指示R在绘制点+图例时使用这种字体。 (现在我突然想到,我可能只是使用text和自定义字体来绘制点。但这并不能解决图例问题。) 我也考虑过使用ggplot2,但这可能最容易通过

我试图用这些点在R中绘制散点图:

(据我所知,W.克利夫兰建议将其分别用于稀疏和密集散点图——我现在称之为“克利夫兰点”。)

最下面的一行应该是直接的,而最上面的一行可以通过进行一些智能的过度绘制(即,在彼此的顶部绘制两个符号)来实现。但在绘制图例时,这还不够

因此,作为解决方案,我设想得到一种包含这10个符号的字体,并指示R在绘制点+图例时使用这种字体。 (现在我突然想到,我可能只是使用
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使用它们?哇!哇。我印象深刻,但它需要一些调整。