не может изменить pch (точечный символ) в диаграмме R. Корреляция

Я использовал «chart.Correlation» в пакете «performanceAnalytics», чтобы нарисовать график матрицы корреляции. Но я не могу изменить символ точки с параметром «pch». Вот код,

install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)   
chart.Correlation(iris[1:4], histogram=TRUE, pch=3)

и что я получил, график корреляционной матрицы. На самом деле не работает ни один из параметров passthru (например, labels, lty).


person Kang    schedule 06.03.2018    source источник
comment
Это не работает для меня   -  person Kang    schedule 06.03.2018


Ответы (2)


Редактировать: обратите внимание, что в открытом тикете git hub точки были удалены в version 1.5.2 для устранения предупреждающих сообщений. Поэтому обратите внимание, что, хотя описанное ниже решает конкретную рассматриваемую проблему, оно может вызвать другие в зависимости от того, какие аргументы передаются функции.

Исправил, просто добавил ... к pairs вызовам:

chart.Correlation <- function (R, histogram = TRUE, method = c("pearson", "kendall", 
    "spearman"), ...) 
{
    x = checkData(R, method = "matrix")
    if (missing(method)) 
        method = method[1]
    panel.cor <- function(x, y, digits = 2, prefix = "", use = "pairwise.complete.obs", 
        method = "pearson", cex.cor, ...) {
        usr <- par("usr")
        on.exit(par(usr))
        par(usr = c(0, 1, 0, 1))
        r <- cor(x, y, use = use, method = method)
        txt <- format(c(r, 0.123456789), digits = digits)[1]
        txt <- paste(prefix, txt, sep = "")
        if (missing(cex.cor)) 
            cex <- 0.8/strwidth(txt)
        test <- cor.test(as.numeric(x), as.numeric(y), method = method)
        Signif <- symnum(test$p.value, corr = FALSE, na = FALSE, 
            cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", 
                "**", "*", ".", " "))
        text(0.5, 0.5, txt, cex = cex * (abs(r) + 0.3)/1.3)
        text(0.8, 0.8, Signif, cex = cex, col = 2)
    }
    f <- function(t) {
        dnorm(t, mean = mean(x), sd = sd.xts(x))
    }
    dotargs <- list(...)
    dotargs$method <- NULL
    rm(method)
    hist.panel = function(x, ... = NULL) {
        par(new = TRUE)
        hist(x, col = "light gray", probability = TRUE, axes = FALSE, 
            main = "", breaks = "FD")
        lines(density(x, na.rm = TRUE), col = "red", lwd = 1)
        rug(x)
    }
    if (histogram) 
        pairs(x, gap = 0, lower.panel = panel.smooth, upper.panel = panel.cor, 
            diag.panel = hist.panel, ...)
    else pairs(x, gap = 0, lower.panel = panel.smooth, upper.panel = panel.cor, ...)
}

chart.Correlation(iris[1:4], histogram=TRUE, pch=3)

введите здесь описание изображения

person Mako212    schedule 06.03.2018
comment
Прохладный! Большое спасибо! - person Kang; 07.03.2018

«Фигуры» также имеют числовой код. напр. pch = "+" эквивалентно pch = 3 или pch = "." = pch = 46. См. ?points список. В вашем случае вы можете попробовать:

chart.Correlation(iris[1:4], histogram=TRUE, pch=3)
person jay.sf    schedule 06.03.2018
comment
трудно догадаться без воспроизводимого примера - person jay.sf; 06.03.2018
comment
Спасибо!! Но это все, что я ввел chart.Correlation(iris[1:4], histogram=TRUE, pch=3) . Потому что радужная оболочка — это встроенные данные. Будет ли это считаться воспроизводимым примером? - person Kang; 06.03.2018
comment
Конечно, спасибо за ретроспективное указание библиотеки! Я попробовал пример в файле справки data(managers); chart.Correlation(managers[,1:8], histogram=TRUE, pch="+") Я не вижу никаких + на графике, не так ли? Кажется, это своего рода ошибка пакета, я думаю. - person jay.sf; 06.03.2018
comment
Большое спасибо за попытку! Согласен, может это баг. - person Kang; 06.03.2018
comment
Добро пожаловать. Я открыл заявку на эту проблему на GitHub. - person jay.sf; 06.03.2018