2013-12-19 2 views
0

Я понимаю, что исправление для этой проблемы, конечно, очень тривиально, но по какой-то причине я не могу опустить голову вокруг нее!Проблема при настройке оси графика в R

Рассмотрим следующий вектор (зоопарк объекта)

library(zoo) 
h1 = c(-0.0130944, -0.0132586, -0.0132235, -0.0131435, -0.0134029, -0.0128966, -0.0130439) 
h1.zoo = zoo(h1, order.by = as.Date(c("2013-12-09", "2013-12-10", "2013-12-11", "2013-12-12", "2013-12-13", "2013-12-16", "2013-12-17")) 

Я хочу построить вектор h1.zoo, с Y-оси пределах -0.2 до 0. Я хочу, ось у пересечения с х-оси, чтобы быть в точке у = -0,2

Я попытался следующие:

jpeg(out.jpg, width=800, height=600)  
par(mai = c(1,2,1,0.7), cex=1.6, xaxs='i',yaxs='i', xpd = TRUE, width = 800, height = 600) 
if (!all(is.na(h1.zoo))) 
{ 
    plot(na.trim(h1.zoo), main="", xlab="Date", ylab="", yaxt = "n", bty = "n", cex.axis = 0.8) 
    axis(2, las = 2, cex.axis = 0.8, at = seq(-0.02, 0, 0.002), labels = seq(-0.02, 0, 0.002), ylim = c(-0.02,0)) 
    title(ylab = "Contribution to Expected Return (in %)", line = 4) 
} 
dev.off() 

, но это приводит к сюжету, который не имеет тиков по оси у, и очень необычные пропорции. Я не уверен, что я делаю неправильно.

enter image description here

Спасибо за помощь!

+0

Попробуйте удалить следующие аргументы: 'xpd = TRUE' и' yaxt = 'n''. xpd позволяет строить график за пределами области фигуры, тогда как yaxt управляет типом оси y. – TWL

+0

Если я это сделаю, все, что он собирается сделать, это переопределить все функции функции(). Я хочу сохранить 'yaxt =" n "', но сделайте функцию function() корректной. Чтобы доказать это, посмотрите на пределы оси y, когда вы удаляете 'yaxt =" n "': они не являются -0.2 и 0, как я хочу. – Mayou

+0

OK, что, если вы используете аргумент 'ylim-c (-0.02,0)' непосредственно в 'plot()'. Затем вы можете либо избавиться от 'axis()' и 'yaxt = 'n'', либо сохранить' axis() 'для управления более высокой осью. – TWL

ответ

2

насчет:

plot(as.numeric(na.trim(h1.zoo)), main="", xlab="Date", 
     ylab="", yaxt = "n",xaxt="n", axes = F,ylim = c(-0.02,-0.01), type = 'l') 
    axis(1,pos=-0.02) 
    axis(2,pos=1) 
0

Это то, что вы имели в виду

код: (с использованием данных, предоставленных)

par(mai = c(1,2,1,0.7), xaxs='i',yaxs='i', xpd = F) 
plot(na.trim(h1.zoo), main="", xlab="Date", ylab="", yaxt = "n", bty = "n", cex.axis = 0.6, ylim=c(-0.0135,-0.0128)) 
axis(2, las = 2, cex.axis = 0.6, at = seq(-.014,-.012,.0001)) 
title(ylab = "Contribution to Expected Return (in %)", line = 3) 

Есть несколько вещей происходит Вот.

Во-первых, вам нужно указать ylim= в команде графика, или plot(...) будет по умолчанию использовать значения max и min. В вашем случае это было (-0.0134,-0.0129). Затем, когда вы указали галочки оси в диапазоне от -0.02 to 0 с шагом 0,002, axis(...) применяет это значение к диапазону, установленному неявно в plot(...). Но в этом диапазоне нет меток.

Во-вторых, вам необходимо установить xpd=F, чтобы закрепить ось должным образом.

В-третьих, нет аргументов ширины и длины до par(...).

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