gpt4 book ai didi

R:调整 ggplot2 中的比例颜色渐变

转载 作者:行者123 更新时间:2023-12-04 11:49:40 25 4
gpt4 key购买 nike

首先,这是 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 重新使用 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 着色的 map ,看看我的代码。
g1 <- ggplot() + geom_point(data = mydata,aes(x = LONGITUDE,y = LATITUDE,color=NUM_PICKUPS))

enter image description here

是的,代码和图表都是正确的,但是看看 颜色 ,很难辨认高的地方在哪里 num_pickups ?哪里少了?

我尝试用 scale_colour_gradient() 修改我的代码:
g1 + scale_colour_gradient(low = "red",high = "white")

enter image description here

但是看图片, 颜色也很难归类。

第三次尝试:这次我添加了 的参数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))

enter image description here

但是还是很无奈!

第四次尝试:
ggplot(data = mydata, aes(x = LONGITUDE,y = LATITUDE, color = NUM_PICKUPS)) + geom_point() + scale_colour_gradient(limits = c(0, 60))

enter image description here

第五次尝试:
根据3年前的帖子, ggplot2 Color Scale Over Affected by Outliers ,我尝试再次修改我的代码:
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))

enter image description here

中确实发生了一些变化异常值 ,但是色阶还是很难分类!

所以,我的问题是如何修改我的代码以制作 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)可能有助于减少足以绘制的范围。

关于R:调整 ggplot2 中的比例颜色渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34155426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com