我有三列:纬度,经度和价格。 我想绘制一个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
我有三列:纬度,经度和价格。 我想绘制一个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
您可以使用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坐标。
所有'ifelse'编码都可以简化为'cut(dt $ price,c(0,50,100,Inf),labels = c(“red”,“blue”,“black”))' – thelatemail
@thelatemail谢谢为了指出这一点! –
首先在'price'列中使用'cut()'或'findInterval()'获取组。 – thelatemail
我做到了。现在我在价格栏中输入0,1,... 9(10个分箱)。这将如何解决它? – user2609410