2013-12-09 2 views
-3

В R Я ищу для создания тепловой карты, аналогичной приведенной ниже. Где размер представляет собой вытесненную энергию, а цвет представляет собой глубину.Bubble plot of mine quakes

Мой набор данных (CSV) выглядит примерно так:

X,  Y,  Z,  E 
19305, -11211, -599, 3000 
22159, -13553, -600, 300 
22155, -13519, -823, 2000 
...  ...  ... ... 

Где X, Y & Z являются осями и Е есть энергия.

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

Related

Спасибо!

heatmap

+0

«Просьба привести образец кода» - это не так, как работает SO. –

+0

http://stackoverflow.com/questions/19262805/r-geom-point-and-ggmap/ –

+3

Это не «тепловая карта». Посмотрите «пузырьковая диаграмма» или «диаграмма воздушного шара». –

ответ

2

Edit: Обновлено использовать более значимые данные. Первоначальный ответ находится внизу.

Эта карта ...

... может быть получено с помощью следующего кода:

library(ggplot2) 
library(maptools) 

# grab earthquake data [source: USGS Earthquake Hazards Program] 
url <- "http://comcat.cr.usgs.gov/fdsnws/event/1/query" 
querystring <- "starttime=2012-01-01T00:00:00Z" 
querystring <- paste(querystring,"minmagnitude=6", sep="&") # magnitude >= 6 
querystring <- paste(querystring,"mindepth=0",  sep="&") 
querystring <- paste(querystring,"maxdepth=1000", sep="&") # depth <= 1000 km 
querystring <- paste(querystring,"format=csv",  sep="&") # return CSV file 
uri <- paste(url,querystring,sep="?") 
ggQuakes <- read.table(header=T,sep=",", file=uri) 
# grab world map [built into maptools package] 
ggMap <- fortify(wrld_simpl) 
# create map payers 
ggp <- ggplot(ggQuakes) 
ggp <- ggp + geom_point(aes(x=longitude ,y=latitude ,color=depth ,size=mag), alpha=0.8) 
ggp <- ggp + scale_size(range=c(4,8)) 
ggp <- ggp + scale_color_gradient(low="#aaaaaa", high="#cc0000") 
ggp <- ggp + geom_path(data=ggMap, aes(x=long, y=lat, group=group)) 
ggp <- ggp + coord_equal() 
ggp <- ggp + theme(legend.position="bottom") 
# render map 
print(ggp) 

оригинальный ответ:

Было бы лучше, если бы вы предоставили более репрезентативные образцы данных, но назовите свой набор данных gg,

library(ggplot) 
ggplot(gg) + 
    geom_point(aes(x=X,y=Y,color=Z,size=log(E)), alpha=0.5) + 
    scale_size(range=c(4,8)) +  # sets minimum and maximum size 
    scale_color_gradient(low="#aaaaaa", high="#cc0000") 

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

+0

Спасибо jlhoward! Я также разместил свое собственное решение ниже. DWin указал мне в правильном направлении. – bskool

+0

@bskool - см. правки выше. – jlhoward

0
symbols(quakes$X, quakes$Y, circles=quakes$E) 

radius <- sqrt(quakes$E/ pi) 
symbols(quakes$X, quakes$Y, circles=radius) 

symbols(quakes$X, quakes$Y, circles=radius, inches=0.35, fg="white", bg="red", xlab="Murder Rate", ylab="Burglary Rate") 

Просто не хватает Z раскрашивание.