2012-02-01 4 views
5

Как я могу дублировать этот стиль графика, используя несколько графиков на одном графике и, желательно, легенды, указанные ниже.Выделите несколько сегментов линии на одном графике, используя R

Я пробовал концепцию «facet», но ggplot2 и решетку: xyplot оба рассматривают грани как отдельные панели, а не наложенные графики.

Я могу сделать это, используя простой Jane plot() и line() .. но использовал ggplot2 и woudl, чтобы получить несколько строк на одном участке в этом пакете.

Вот некоторые примеры данные в длинной форме (захваченные из графика, используя изящное приложение под названием «Graphclick»)

comp <- read.table(pipe("pbpaste"), header=T, sep=',') 

company, year, sales 
Apple,1975.003,17298.457 
Apple,1977.302,16784.502 
Apple,1978.314,17298.457 
Apple,1980.246,20730.098 
Apple,1981.533,27608.426 
Apple,1984.293,40862.852 
Apple,1986.408,50468.617 
Apple,1987.328,48236.188 
Apple,1988.892,35676.547 
Apple,1989.904,34616.582 
Apple,1991.192,44732.742 
Apple,1992.387,44732.742 
Apple,1993.399,39055.324 
Apple,1995.791,37894.922 
Apple,1996.895,39648.746 
Apple,1998.274,52804.367 
Apple,1999.378,61399.512 
Apple,2001.770,2.350e5 
Apple,2005.265,7.735e5 
Toshiba,1999.378,86856.6 
Toshiba,2001.862,1.192e5 
Toshiba,2004.069,1.495e5 
Toshiba,2004.069,1.495e5 
IBM,1975.003,22019.092 
IBM,1975.830,27195.193 
IBM,1976.934,30682.320 
IBM,1978.130,31148.527 
IBM,1980.430,35676.547 
IBM,1981.625,35676.547 
IBM,1983.005,39648.746 
IBM,1985.305,40862.852 
IBM,1986.408,46102.508 
IBM,1987.512,64241.156 
IBM,1989.996,75832.898 
IBM,1991.100,84276.039 
IBM,1992.295,85556.641 
IBM,1993.307,79342.539 
IBM,1994.779,79342.539 
IBM,1995.791,84276.039 
IBM,1996.895,95082.484 
IBM,1996.895,95082.484 
Commodore,1975.003,33588.051 
Commodore,1975.830,34616.582 
Commodore,1977.118,25219.982 
Commodore,1978.130,23388.229 
Commodore,1979.326,25992.234 
Commodore,1980.521,21689.514 
Commodore,1981.717,25219.982 
Commodore,1984.201,6999.029 
Commodore,1985.213,1670.460 
Commodore,1986.408,1458.447 

computing over time http://www.asymco.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-18-at-1-18-4.31.31-PM.png

+0

К сожалению, я не В чем проблема. Почему вы хотите использовать грани вообще? Я не вижу никаких граней или панелей на графике, который вы пытаетесь дублировать. Пример кода будут полезны данные –

+3

Единственная причина, по которой 'ggplot2' будет создавать грани, это если вы явно сказали это. Вероятно, вы просто хотите опустить какую-либо ссылку на фасеты в своем коде и использовать 'geom_line', устанавливая« групповую »эстетику для переменной« создатель компьютера ». Но в целом я не понимаю, как вы ожидаете получить достойную помощь, не публикуя свои данные и код. – joran

+0

данные добавлены.может получить несколько графиков, используя группу эстетических и geom_Line. Благодаря! ggplot (data = comp, aes (year, sales, group = company)) + geom_line() Теперь просто нужен журнал оси Y, цвета для каждого сюжета и метки на графике – tim

ответ

5

так, в ggplot2, этот код работает

qplot(year, sales, data=comp, colour=as.factor(company), group= company, geom="path", log="y") 

Осталось только форматировать значение по оси Y как числовое (не обозначение sci), а метки находятся в легенде вне графика, а не на графиках ... Приветствуются окончательные предложения.

Это намного проще, в конце концов, чем сюжет() + линий(), так как этот необходимый код поддержки, чтобы получить диапазоны, итерацию по уровням группы и т.д.

image

+0

Если это комментарий, я бы предложил вам добавить его к вашему вопросу (и удалить этот ответ). Если это (определенный) ответ, вы можете принять его, нажав галочку под номером ответа. –

5

Если вы ищете наиболее управления, вы могли бы просто используйте команды низкоуровневого графика и линий. Используйте «plot» для создания первого графика (с заголовком, xlimits и ylimits), затем используйте «lines», чтобы добавить строки к этому графику.

plot(0,type="n", xlim=c(0,10), ylim=c(0,10), xlab="X Label", ylab="Y Label", main="Title") 

Затем добавьте строки с помощью строки команды:

lines(1:10, 1:10, type="l", lty=2) 
lines(2:4, 10:8, col=2, type="l") 
lines(6:9, c(5,6,5,6), col=3, type="l") 

Вы можете настроить внешний вид, используя все из параметров, перечисленных в «номинальной» файл справки («пар?»)

Output of commands

+0

Спасибо Джефф! У меня было решение вроде этого с сюжетом ... может быть, это самый простой и лучший способ продолжить :-) – tim

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