2012-06-20 1 views
0

Можно создать граф внутри R для размера точки для представления количества документов в год. Я попытался создать такой граф в Excel, используя диаграмму рассеяния, но не использую.Произвести диаграмму рассеяния, где размер точки изменяется в соответствии с третьей переменной

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

Я нашел этот код здесь StackOverFlow Post

year <- 1:5 
logtrans <- log(year) 
size <- rep(15,5) 
intel2 <- data.frame(HexLogClock=c("#330000", "#FFFFCC", "#660000", 
            "#FF0000", "#00FF00"), 
        stringsAsFactors=FALSE) 
symbols(year, logtrans, circles=size, inches=0.25, bg=intel2$HexLogClock) 

Я хотел бы быть в состоянии произвести эту цифру, но имеет размер кругов меняться в зависимости от стоимости в год.

Приветствия, Jess

Пример данных Set (К сожалению о форматировании)

Country Year 2008 Year 2009 Year 2010 Year 2011 
Argentina 35 60 89 120 
Austrailia 56 89 75 100 
Canada   25 65 89 148 
Ireland 25 65 90 200 
Italy    27 75 45 100 
New Zealand 56 98 36 54 
Spain    78 54 100 89 
United Kingdom 56 102 158 238 
United States 45 99 179 250 

Я хотел бы быть в состоянии сделать это, используя файл TXT выше я прочитал данные с помощью команды !

myData3 <- read.delim(file="noofpublications_Collab2.txt", header = TRUE, sep = "\t") 
+0

Можете ли вы предоставить образец ваших данных? Без этого единственный ответ, который мы можем дать, это: «Да, вы можете делать то, что вы просите». – Justin

+0

Добавит пример txt-файла выше :) –

ответ

2
symbols(year, logtrans, circles=logtrans, inches=0.25, bg=intel2$HexLogClock) 

обычно вы будете работать с data.frame:

DF <- data.frame(year, logtrans, color=intel2$HexLogClock) 

тогда вызов symbols становится:

symbols(DF$year, DF$logtrans, circles=DF$logtrans, inches=0.25, bg=DF$color) 

Это также может быть сделано в одном более продвинутых графических библиотек. Я предпочитаю ggplot2

library(ggplot2) 
ggplot(DF, aes(x=year, y=logtrans, colour=color, size=logtrans)) + geom_point()\\ 

Per замечание OP и редактировать,

Воссоздание части данных:

dat <- structure(list(country = c("argentina", "australia", "canada", "ireland", "italy"), year08 = c(35, 56, 25, 25, 27), year09 = c(60, 89, 65, 65, 75), year10 = c(89, 75, 89, 90, 45), year11 = c(120, 100, 148, 200, 100)), .Names = c("country", "year08", "year09", "year10", "year11"), row.names = c(NA, -5L), class = "data.frame") 

Я бы затем использовать melt из reshape2 пакета ,

library(reshape2) 
dat.melt <- melt(dat, id.var='country') 

А затем участок с ggplot:

ggplot(dat.melt, aes(x=variable, y=value, colour=country, size=value)) + geom_point() 

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

Однако я не знаю, было ли это сравнение, которое вы пытаетесь сделать!

+0

, так используя таблицу, которую я включил выше, как бы вы это сделали? –

+0

Можно изменить размер круга? В зависимости от страны или года, как показано выше? –

+0

Как можно импортировать данные с помощью TXT с файлом данных, который я включил, поскольку это было бы полезно также :) –

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