当前位置:  开发笔记 > 开发工具 > 正文

R:调整ggplot2中的缩放颜色渐变

如何解决《R:调整ggplot2中的缩放颜色渐变》经验,为你挑选了1个好方法。

首先,这是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_PICKUPSdesc 求助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易于识别?



1> Phil..:

根据我的评论和你的回答,我认为问题是你有一些异常值迫使规模扩大以适应它们.

从您的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)可能有助于缩小范围以进行绘图.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有