Как я могу сделать линейный сюжет в R? - PullRequest
0 голосов
/ 20 февраля 2012

Я пытаюсь использовать R для создания превосходного вида линейного графика, где моя ось x является текстом (A, B, c..etc), а ось y (которая может быть как отрицательной, так и положительной) вверхи вниз по столбцам.Я хочу отказаться от красного и зеленого цвета.

Буду очень признателен, если кто-нибудь сможет мне помочь в этом.Я построил это в Excel, но у меня есть тысячи строк в моих данных, и Excel не показывает всю текстовую точку на моем графике.

Мои данные выглядят следующим образом:

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

1 Ответ

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

Вероятно, это не самый элегантный способ сделать это, но вы можете решить все это с помощью plot, points и axis (axis - это основной, он объясняет, как вы можете изменить метки на оси): ?axis, ?plot, ?points.

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

# make a data frame similar to yours
mydf <- data.frame( Name=LETTERS, 
        Up=sample.int(15,size=26,replace=T), 
        Down=-sample.int(15,size=26,replace=T) )

Теперь сюжет.

# set up a plot: x axis goes from 1 to 26,
# y limit goes from -15 to 15 (picked manually, you can work yours out
#   programmatically)
# Disable plotting of axes (axes=FALSE)
# Put in some x and y labels and a plot title (see ?plot...)
plot(0,xlim=c(1,26),ylim=c(-15,15),type='n',
     axes=FALSE,                 # don't draw axis -- we'll put it in later.
     xlab='Name',ylab='Change',  # x and y labels
     main='Ups and Downs')       #,frame.plot=T -- try if you like. ?plot.default
# Plot the 'Up' column in green (see ?points)
points(Up~Name,mydf,col='green')
# Plot the 'Down' column in red
points(Down~Name,mydf,col='red')
# ***Draw the x axis, with labels being A-Z 
#  (type in 'LETTERS' to the prompt to see what they are)
# see also ?axis
axis(1,at=1:26,labels=LETTERS)
# Draw the y axis
axis(2)

enter image description here

Настройте его по своему желанию: ?points и ?par и ?axis особенно полезны в этом отношении.

...