2013-12-02 3 views
2

Я пытаюсь использовать больший размер шрифта для тех, у кого плохое зрение.R quantmod chart_Series: использование больших шрифтов для оси y

library(quantmod) 
getSymbols("SPY", from="2013-11-01", to=Sys.Date()) 
chart_Series(SPY) 

myPars <-chart_pars() 
myPars$cex<-1.5 

chart1 <- chart_Series(SPY, pars=myPars) 
chart1 

Однако, когда я это делаю, отображается только часть шкалы чисел оси y. Можно ли сдвинуть график, поэтому шкала чисел оси Y не обрезается. Благодарим вас за помощь.

ответ

5

Когда я пытаюсь выполнить код (обратите внимание, что это в R 3.1.0 в студии R), шкала чисел оси y не отключается. Тем не менее, вы можете отрегулировать chart_pars() (как вы уже сделали) и chart_theme(), чтобы достичь желаемого.

Для уменьшения толщины по оси y вы можете настроить параметры поля, $mar, chart_pars(). Увеличьте значения параметров поля слева (или или справа), чтобы удалить скопление чисел оси y. Вы также можете рассмотреть возможность удаления либо левой, либо правой оси оси, чтобы сохранить больше места. Вот пример, с объяснениями:

library(quantmod) 
getSymbols("SPY", from="2013-11-01", to=Sys.Date()) 
myPars <- chart_pars() 
myPars$mar <- c(3, 2, 0, .2) # default is c(3, 1, 0, 1) # bottom, left, top, right 
myPars$cex <- 1.5 #' Increase font size of both x and y axis scale ticks 
mychartTheme <- chart_theme() 
mychartTheme$rylab = FALSE #' Don't show y-axis on right side of plot to save space 
# mychartTheme$lylab = TRUE #' Show y-axis ticks on left side of plot? Default is TRUE for both left and right sides. 
chart1 <- chart_Series(SPY, pars=myPars, theme = mychartTheme) 
chart1 

Участок вы получите от этого кода: enter image description here

Кроме того, в случае, если вы заинтересованы в редактировании количества десятичных разрядов, отображаемых на у- (например, в FX для валют, котируемых в пунктах на 1e-4), вы можете редактировать исходный код chart_Series на определенных строках, чтобы получить то, что вы хотите.

Например, для построения графика на 4 знака после запятой только по оси В только по оси Y и смещения печати чисел оси Y влево (поэтому они не строятся под столбцами вблизи левого поля сюжет), можно редактировать строки 143-147 из chart_Series, как это (создать копию chart_Series со следующими правок):

#' my.chart_Series is identical to the definition of chart_Series, with these minor edits 
    my.chart_Series <- function (x, name = deparse(substitute(x)), type = "candlesticks", 
      subset = "", TA = "", pars = chart_pars(), theme = chart_theme(), 
      clev = 0, ...) 
{ 
    cs <- new.replot() 
    .... 
[lines 143-147]: if (theme$lylab) { 
    cs$add(expression(text(1 - 1/3 - max(strwidth(alabels)), 
          alabels, sprintf("%.4f", alabels), #alabels, noquote(format(alabels, justify = "left", digits = 4)), 
          col = theme$labels, offset = -2, cex = 0.9, pos = 4, 
          xpd = TRUE)), expr = TRUE) 
    } #' default offset = 0 
    .... 
} 

, а затем в вашем R сценарий, чтобы увидеть этот эффект написать что-то вроде этого:

source('my.chart_Series.R') 
environment(my.chart_Series) <- environment(get("chart_Series", envir = asNamespace("quantmod"))) 
assignInNamespace(x = "chart_Series", value = my.chart_Series, ns = "quantmod") 

myPars <- chart_pars() 
myPars$mar <- c(3, 3, 0, .2) # default is c(3, 1, 0, 1) # bottom, left, top, right 
myPars$cex <- 1.0 #' Increase font size of both x and y axis scale ticks 
mychartTheme <- chart_theme() 
mychartTheme$rylab = FALSE #' Don't show y-axis on right side of plot to save space 
# mychartTheme$lylab = TRUE #' Show y-axis ticks on left side of plot? Default is TRUE for both left and right sides. 
chart1 <- quantmod:::chart_Series(SPY, pars=myPars, theme = mychartTheme) #' Note the need to prepend the quantmod namespace to the modified visible chart_Series function in quantmod. 
chart1 

Это даст вам этот участок:

enter image description here

Кроме того, чтобы уменьшить количество клещей, нарисованных на оси у, вы можете также изменить линию 128 в chart_Series так: p <- pretty(ylim, n = 5) #' The original source code (quantmod 0.4-0) is p <- pretty(ylim, 10) Смотрите справочную документацию R для ограничений на n аргумент в R функция pretty. Это дает: enter image description here

+0

Большое спасибо за помощь –

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