首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以创建使用cex自动调整大小的点?

是否可以创建使用cex自动调整大小的点?
EN

Stack Overflow用户
提问于 2017-04-17 07:30:31
回答 1查看 138关注 0票数 2

以下数据表示与收入相关的多个地理点:

代码语言:javascript
复制
df1 <- data.frame(lat = c(36.75, 46.21, 32.31, 29.5, 35.46), long = c(-88.79, -97.8, -106.79, -82.28, -97.51), revenue = c(15000, 10000, 4000, 30000, 12000))

下面的代码在地图上绘制点:

代码语言:javascript
复制
plot(map, xlim = c(-130, -65), ylim = c(35,40), asp = 1)
points(df1$long, df1$lat, col="red", pch=16, cex=0.0003*df1$revenue)

为了创建上面的地图,我将"cex“设置为等于收入* 0.0003。

当我处理大的收入数量时,我需要将值乘以极小的1的分数,以便使地图在视觉上顺从。

有没有可能自动调整这些点的大小,只需输入“1”、“2”、“3”等,这些点就会自动调整到自然大小?在目前的情况下,我不得不摆弄极小的数字来使其工作。

(作为参考,我正在考虑类似于ggplot2中绘图的“size”函数的内容。)

EN

回答 1

Stack Overflow用户

发布于 2017-04-17 09:05:49

您可以将cex值限制在某个范围内,如下所示。从评论中我并不熟悉scales::rescale,但也许这也是同样的事情

代码语言:javascript
复制
# set the minimum and maximum cex values
cex_min <- 1
cex_max <- 4

df1 <- data.frame(lat = c(36.75, 46.21, 32.31, 29.5, 35.46), long = c(-88.79, -97.8, -106.79, -82.28, -97.51), revenue = c(15000, 10000, 4000, 30000, 12000))

df1$revenue2 <- df1$revenue - min(df1$revenue)
df1$proportion <- df1$revenue2 / max(df1$revenue2)
df1$cex_val <- cex_min + df1$proportion * (cex_max - cex_min)

plot(map, xlim = c(-130, -65), ylim = c(35,40), asp = 1)
points(df1$long, df1$lat, col="red", pch=16, cex=df1$cex_val)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43443253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档