2016-04-06 27 views
1

我有三列:纬度,经度和价格。 我想绘制一个x轴为lat,y轴的图形。点的颜色由价格值决定。 (0-50 $ - 红色,50-100 $蓝色等)。我尝试使用ggplots,但没有找到任何可以根据提供的范围着色的点。基于颜色框的R中的绘图图形

latitude longitude price 
40.8520537789 -73.7886796346 100 
40.8411441603 -73.7830522867 100.4 
40.8500238142 -73.7893275949 102 
+1

首先在'price'列中使用'cut()'或'findInterval()'获取组。 – thelatemail

+0

我做到了。现在我在价格栏中输入0,1,... 9(10个分箱)。这将如何解决它? – user2609410

回答

1

您可以使用plot()函数。

这里是data.table(或者,你可以用data.frame为好)

> dt 
    latitude longitude price 
1: 40.85205 -73.78868 100.0 
2: 40.84114 -73.78305 100.4 
3: 40.85002 -73.78933 102.0 

你可以找出通过下面的代码的每一行的颜色。

color_val <- ifelse(dt[['price']] >= 0 & dt[['price']] <= 50,"red",ifelse(dt[['price']] > 50 & dt[['price']] <= 100,"blue","black")) 

或采用如通过@thelatemail提到:

cut(dt$price, c(0,50,100,Inf), labels=c("red","blue","black")) 

现在,你可以通过这个命令绘制数据:

plot(x = dt[['latitude']],y = dt[['longitude']],col = color_val) 

注:这只是正常的绘制上xy坐标。

+2

所有'ifelse'编码都可以简化为'cut(dt $ price,c(0,50,100,Inf),labels = c(“red”,“blue”,“black”))' – thelatemail

+0

@thelatemail谢谢为了指出这一点! –