Изменения в построении объекта XTS - PullRequest
0 голосов
/ 26 апреля 2018

Я создал следующую диаграмму, созданную с использованием объекта xts.

enter image description here

Код, который я использовал, был просто

   plot(graphTS1$CCLL, type = "l", las = 2, ylab = "(c)\nCC for Investors", xlab = "", main = "Clustering Coefficient at the Investor Level")

Я обновил пакет R Studio Package и версию R, а затем, запустив тот же код, получил следующую таблицу.

enter image description here

Очевидно, что это не одно и то же. Могут ли люди помочь мне снять вторую ось Y - мне это не нужно, и убрать автоматический заголовок 2007-03-01 / 2010-12-01. Многочисленные попытки этого провалились. Я использовал zoo.plot, но линии сетки, способности и квартальные отметки были удалены.

Моя версия R - 3.4.0 (2017-04-21) со следующей платформой "x86_64-apple-darwin15.6.0". Заранее спасибо.

1 Ответ

0 голосов
/ 26 апреля 2018

Вы хотите удалить правую ось. В plot.xts(..., yaxis.right = TRUE, ...) есть аргумент. Так

library('xts')
#> Loading required package: zoo
#> 
#> Attaching package: 'zoo'
#> The following objects are masked from 'package:base':
#> 
#>     as.Date, as.Date.numeric

data(sample_matrix)
sample.xts <- as.xts(sample_matrix, descr='my new xts object')

plot(sample.xts, yaxis.right = FALSE)

делает то, что вы хотите.

Я попытался ответить на второй вопрос, убрав ярлык в правой верхней части. Изучение исходного кода для plot.xts() показывает, что метка жестко закодирована в основной заголовок. Даже установка main = '' не удалит его. Вы можете обойти это, отредактировав plot.xts() и скопировав его в новую функцию.

plotxts <- fix("plot.xts")
# In the editor that opens, replace the lines below:
###    text.exp <- c(expression(text(xlim[1], 0.5, main, font = 2, 
###        col = theme$labels, offset = 0, cex = 1.1, pos = 4)), 
###        expression(text(xlim[2], 0.5, paste(start(xdata[xsubset]), 
###            end(xdata[xsubset]), sep = " / "), col = theme$labels, 
###            adj = c(0, 0), pos = 2)))
###    cs$add(text.exp, env = cs$Env, expr = TRUE)
# with these lines:
###    text.exp <- expression(text(xlim[1], 0.5, main, font = 2,
###        col = theme$labels, offset = 0, cex = 1.1, pos = 4))

# Finally, you need to ensure your copy's environment is the xts namespace:
environment(plotxts) <- asNamespace("xts")

plotxts(sample.xts, yaxis.right = FALSE, main = "Main Title")

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

zoo::plot.zoo(sample.xts, screens = 1, xlab="", las=2, main="Main Title")
grid() # add the grid

Это, по крайней мере, дает сетку там. Я не могу проверить, будет ли он обрабатывать метки оси X без данных на правильной частоте.

...