首先,这是mydata(121315*4)的一部分:
LONGITUDE LATITUDE NUM_PICKUPS TOTAL_REVENUE 1 121.6177 38.9124 21 337.0 2 121.8069 39.0210 16 454.7 3 121.5723 38.9645 38 696.9 4 121.6423 38.9258 622 13609.7 5 121.5647 38.9129 116 2016.7 6 121.6429 38.8846 120 2417.3 7 121.5852 38.9279 117 1975.0 8 121.6616 38.9189 94 1712.4 9 121.5812 38.9828 50 981.6 10 121.6411 38.9255 225 4696.2
看到这一点,第一列和第二列是经度和纬度.
mydata[1,3]=21
意思是在地方(121.6177, 38.9124)
,有21个拾音器.
然后,我用NUM_PICKUPS
desc 求助mydata :
LONGITUDE LATITUDE NUM_PICKUPS TOTAL_REVENUE 121.6019 39.0181 14243 514716 121.5382 38.9609 13244 443754.7 121.5381 38.9609 9645 325056 121.5382 38.9608 8846 294345.6 121.602 39.0181 6556 232254.5 121.5383 38.9609 6152 208967.6 121.5383 38.9608 6014 207677.8 121.5381 38.9608 5544 185398.3 121.6018 39.018 4546 167662.1 121.5382 38.9607 4260 143088.9 121.5827 38.8948 4133 72202.8 121.6303 38.9183 3837 67683.6 121.5966 38.9665 3747 56378.7
还有mydata的摘要:
summary(mydata) LONGITUDE LATITUDE NUM_PICKUPS TOTAL_REVENUE Min. :121.1 Min. :38.76 Min. : 10.00 Min. : 92.9 1st Qu.:121.6 1st Qu.:38.91 1st Qu.: 15.00 1st Qu.: 289.7 Median :121.6 Median :38.92 Median : 27.00 Median : 515.1 Mean :121.6 Mean :38.93 Mean : 57.03 Mean : 1067.6 3rd Qu.:121.6 3rd Qu.:38.96 3rd Qu.: 59.00 3rd Qu.: 1089.5 Max. :122.0 Max. :39.32 Max. :14243.00 Max. :514716.0
现在,我想绘制着色的地图NUM_PICKUPS
,看看我的代码.
g1 <- ggplot() + geom_point(data = mydata,aes(x = LONGITUDE,y = LATITUDE,color=NUM_PICKUPS))
是的,代码和图表都是正确的,但看起来颜色,很难识别高处的位置在哪里num_pickups
?哪里少?
我尝试修改我的代码scale_colour_gradient()
:
g1 + scale_colour_gradient(low = "red",high = "white")
但看图片,颜色也难以分类.
第三次尝试:这次我添加的参数alpha=I(1/100)
和breaks()
:
g1 <- ggplot() + geom_point(data = mydata,aes(x = LONGITUDE,y = LATITUDE,color=NUM_PICKUPS),alpha=I(1/100)) g1 + scale_colour_gradient(low = "red",high = "white", breaks=c(0,2000,4000))
但它仍然无助!
第四次尝试:
ggplot(data = mydata, aes(x = LONGITUDE,y = LATITUDE, color = NUM_PICKUPS)) + geom_point() + scale_colour_gradient(limits = c(0, 60))
第五次尝试: 根据3年前的帖子,受异常值影响的ggplot2色标,我尝试再次修改我的代码:
mydata$NUM_PICKUPS1 <- "> 2000" mydata$NUM_PICKUPS1[mydata$NUM_PICKUPS <= 2000] <- NA g2 <- ggplot() + geom_point(data = subset(mydata,NUM_PICKUPS <= 2000), aes(x = LONGITUDE,y = LATITUDE,color=NUM_PICKUPS),size=2) + geom_point(data = subset(mydata,NUM_PICKUPS > 2000),aes(x = LONGITUDE,y = LATITUDE,fill=NUM_PICKUPS1))
异常值确实发生了变化,但色标仍难以分类!
那么,我的问题是如何修改我的代码以使颜色NUM_PICKUPS
易于识别?
根据我的评论和你的回答,我认为问题是你有一些异常值迫使规模扩大以适应它们.
从您的summary()
75%的情况来看NUM_PICKUPS
,在10到59之间.剩下的25%然后增加到14243,增加三个数量级!
总而言之,您的值的NUM_PICKUPS
范围太大,无法显示低于约1,000的任何变化.
您选择的解决方案取决于您的数据以及您要对其执行的操作.一种选择是仅显示最多75%的值,并将最高25%排除在异常值之外.你可以通过手动设置限制来改变数据,我认为:
g1 + scale_colour_gradient(limits = c(0, 60))
另一种选择是转换您的数据(可能使用log()
或log10()
).例如,mydata$LOG_PICKUPS <- log10(mydata$NUM_PICKUPS)
可能有助于缩小范围以进行绘图.