R построение матрицы с именами строк и столбцов - PullRequest
2 голосов
/ 02 апреля 2011

Я читаю данные в матрице из файла с именами строк и столбцов.Как использовать функции построения графиков R для автоматического построения всех рядов столбцов на оси Y относительно имен строк на оси X и создания легенд для имен столбцов.

data = read.csv(file="sample.csv",head=T,row.names=1)
data
             ES NQ   DJ YAP    FCE ESX    LFT    HS   SNI SXF   STW    CGB
19971006 981.50 NA 8171  NA 3078.0  NA 5371.0 14870 17845  NA 339.9 122.67
19971007 989.50 NA 8232  NA 3071.0  NA 5387.0 14720 17565  NA 334.0 122.65
19971008 989.50 NA 8160  NA 3028.0  NA 5299.0 14880 17630  NA 337.2 122.07
19971009 978.00 NA 8124  NA 2962.0  NA 5264.0 15055 17425  NA 346.8 121.55

# plot ES, NQ, ... series against row-names 19971006,19971007, etc
# create legends for column series ES, NQ, etc..

Обратите внимание, что это должно бытьспособен обрабатывать имена строк 19971006, 1997 года как целые числа и создавать соответствующий разрыв между тиками (например, 1 год, 6 месяцев и т. д.).Я пробовал разные вещи, но это становится грязным, и, кажется, нет хорошего способа управлять вектором имен строк при построении.

Должен ли я использовать другую структуру данных для представления моих данных?

Спасибо!

1 Ответ

3 голосов
/ 02 апреля 2011

вот решение с использованием reshape и ggplot2:

ggplot(
  melt(data.frame(date=as.Date(rownames(data), "%Y%m%d"), data), id.vars="date"),
  aes(date, value, colour=variable)) + 
  geom_line()
  1. преобразовать имена строк в объект Date и связать их с исходным фреймом данных
  2. преобразование широкоформатного фрейма данных в длинный формат путем плавления
  3. построите его, используя ggplot2, но вы можете использовать другой графический пакет.

А для многопанельной версии доступны facet_wrap или facet_grid:

ggplot(
  melt(data.frame(date=as.Date(rownames(data), "%Y%m%d"), data), id.vars="date"),
  aes(date, value)) + 
  geom_line() + 
  facet_wrap(~variable) +
  opts(axis.text.x=theme_text(angle=90))

А вот базовая графическая версия:

d <- data.frame(date=as.Date(rownames(data), "%Y%m%d"), data)
matplot(d[,1], d[,-1], type="b", pch=1, xaxt="n")
axis(1, d[,1], labels=d[,1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...