2016-05-04 2 views
4

Я настраиваю диаграмму PerformanceAnalytic.Correlation().Изменить символы в нижней диагонали диаграммы. Корреляция()

chart.Corr = 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, 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 = "") 
     #print(txt) 
     strwidth(txt) 
     if (missing(cex.cor)) 
      cex <- 1.5 #/strwidth(txt) 
     test <- cor.test(x, 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.5, 0.5, txt, cex = cex) 
     text(0.7, 0.7, Signif, cex = cex-0.25, col = 1) #col = 2 
    } 
    f <- function(t) { 
     dnorm(t, mean = mean(x), sd = sd.xts(x)) 
    } 
    hist.panel = function(x, ...) { 
     par(new = TRUE) 
     hist(x, col = "light gray", probability = TRUE, axes = FALSE, 
      main = "", breaks = "FD", pch=".") 
     lines(density(x, na.rm = TRUE), col = "blue", lwd = 1) 
     rug(x) 
    } 
    print(x) 
    print(class(x)) 
    if (histogram) 
     pairs(x, gap = 0, lower.panel = panel.smooth(pch=“.”), upper.panel = panel.cor, 
      diag.panel = hist.panel, method = method, ...) #(pch=".") 
    else pairs(x, gap = 0, lower.panel = panel.smooth, upper.panel = panel.cor, 
     method = method, ...) 
} 

Когда я создаю экземпляр, мне не нравится моя линия lower.panel = panel.smooth(pch=“.”). В частности, он выдает ошибку,

Ошибка в точках (х, у, пч = пч, цв = цв, BG = BG, CEX = CEX): аргумент "х" отсутствует, не по умолчанию

Ошибка, безусловно, относится к этой нижней панели. В первоначальном синтаксисе функции без аргументов вообще прошло не panel.smooth(), и она работает без сучка и задоринки:

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, 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(x, 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)) 
    } 
    hist.panel = function(x, ...) { 
     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, method = method, ...) 
    else pairs(x, gap = 0, lower.panel = panel.smooth, upper.panel = panel.cor, 
     method = method, ...) 
} 

Я пытаюсь изменить символы точки в диаграммах рассеяния в нижней диагонали диаграммы. Я бы предпочел сделать это, изменив синтаксис panel.smooth(), как описано выше, но я открыт для других решений.

ответ

2

Прости меня, если я недоразумение ваш вопрос, но если вы просто пытаетесь получить диаграммы рассеяния в нижнем левом углу диагонали использовать точку, то этот код будет делать это для вас:

# Loading example data from PerformanceAnalytics 
data(managers) 

# running chart.Correlation with points set to "." (using the argument pch=".") 
chart.Correlation(managers[,1:8], histogram=TRUE, pch=".") 

Если вы пытаетесь сделать что-то более сложное (и, таким образом, необходимо изменить функцию, сам), пожалуйста, прояснить вопрос, и я буду обновлять мой ответ.

+0

Этот простой ответ достаточно, @enpitsu; спасибо за это (smh). Я планирую изменить функцию по другим причинам, но спасибо за это! – Atticus29

+0

Рад, что я могу помочь! – enpitsu

+0

Извините. Награжден наградой за неправильный ответ. Даю вам больше за 23 часа. – Atticus29

3

Я предполагаю, что вы сделали это редактирование с помощью «текстового процессора» или скопировали его на сайт, который заменяет цитированные кавычки для регулярных котировок. НЕ: panel.smooth(pch=“.”). Попробуйте вместо этого:

panel.smooth(pch=".") 

 Смежные вопросы

  • Нет связанных вопросов^_^