Как отформатировать xaxis линейного графика в R, чтобы он мог вместить несколько текстовых меток? - PullRequest
1 голос
/ 20 февраля 2012
Name    UP  Downs
A   10  -3
B   2   -4
C   1   -1
D   4   -1
E   5   0
F   0   -1
G   6   -5
H   0   -1
I   7   -1
J   0   -1
K   0   -11
L   3   -1
M   0   -13
N   2   -1
O   0   -1
P   1   -1
Q   0   0
R   1   -1
S   0   0
T   12  -1
.....
.........
..........
(goes all the way to 2500 rows) 

Вот как выглядит мой R-код ...

nba <- read.csv("test.csv")
plot(nba$UP, type="b", lwd=1, xaxt="n", ylim=c(-22, 22), col="red", xlab="Name", 
    ylab="Change", main="My plot")
axis(1, at=1:length(nba$Name), labels=nba$Name)
lines(rain$Downs, col="green", type="b", lwd=1)

Этот код работает хорошо ... но на графике xaxis показаны несколько выбранных "Name" и не все из них.Вопрос в том ... Есть ли способ показать весь текст в xaxis (либо вертикальный с меньшим шрифтом), и есть ли способ, когда я сохраняю файл как изображение ... я могу увеличить и просмотреть надписи xaxis.

1 Ответ

4 голосов
/ 20 февраля 2012

Возможно, вам будет проще проанализировать ваш график, если вы будете более разборчивы в том, что именно вы действительно хотите построить и обозначить.

Например, одна из стратегий маркировки графиков с множеством наблюдений заключается в маркировке только выбросов. Вот пример того, как вы можете пометить только самые высокие и самые низкие оценки в ваших данных.

Создайте пример данных и график.

set.seed(1)
n <- 100
nba <- data.frame(
    obs = 1:n,   
    Name = paste("label", 1:n, sep="_"), 
    UP = sample(0:15, n, replace=TRUE), 
    Downs = sample(-15:0, n, replace=TRUE)
)

plot(nba$obs, nba$UP, type="b", lwd=1, ylim=c(-22, 22), col="red", 
    xlab="Name", ylab="Change", main="My plot")

Найдите 10 самых высоких и самых низких значений и используйте text, чтобы добавить метку:

nups <- 10
ups <- tail(nba[order(nba$UP), ], nups)
with(ups, text(obs, UP+1, Name, srt=90, adj=0, cex=0.75))

ndowns <- 10
downs <- head(nba[order(nba$UP), ], nups)
with(downs, text(obs, UP-1, Name, srt=90, adj=1, cex=0.75))

enter image description here

...