ggplot geom_point随窗口大小变化大小

2024-03-13

我在创建地图时遇到一些问题ggplot2在上面我使用投影点geom_point。当导出为 pdf 或其他支持时,点大小会有所不同(因为她是绝对的,而不是相对于轴的)。我搜索了如何改变它,并找到了很多答案,说这是故意的,因为如果不是这种情况,每次轴比例改变时它都会变成椭圆。然而,我明白,因为我在地图上工作,所以我使用coord_fixed修复输出并避免地图扭曲,所以如果我能够相对于绘图大小固定点大小,那就不会有问题。

有什么解决方案可以做到这一点吗?我读过一些有趣的事情建议使用geom_polygon人为地创建椭圆。但我用这个方法有两个问题:

  • 首先我不知道如何用我的数据实现这一点,现在我知道我的点的中心在哪里,但是我后来怎么能说如何定义所有的中心,然后定义一个填充的圆形多边形呢?

  • 第二个我用过scale_size_continuous相对于其他变量绘制更小或更大的点。我怎样才能实现它geom_polygon?

事实:我会很高兴能够覆盖无法确定点大小的相对单位的可能性,或者提供一些帮助让我了解如何使用该函数创建相同的东西geom_polygon.

我尝试在这里加入一个可重复的小例子。这只是一个例子,我的数据的问题是我有很多闭合的小值(主要是1,就像可重现示例中的小点),所以它们看起来真的很好,但是导出时它可能会变得很大并通过过度绘制产生很多问题,这就是我需要修复这个比率的原因。

地图信息链接 http://data.geo.admin.ch/ch.swisstopo-vd.ortschaftenverzeichnis_plz/PLZO_CSV_LV03.zip and 地图信息的第二个链接 http://data.geo.admin.ch/ch.swisstopo-vd.ortschaftenverzeichnis_plz/PLZO_SHP_LV03.zip

dat <- data.frame(postcode=c(3012, 2000, 1669, 4054, 6558), n=c(1, 20, 40, 60, 80))

ch <- read.csv("location/PLZO_CSV_LV03/PLZO_CSV_LV03.csv", sep=";")#first link, to attribute a geographical location for each postcode
ch <- ch%>%
  distinct(PLZ, .keep_all=TRUE)%>%
  group_by(PLZ, N, E)%>%
  summarise
ch <- ch%>%
  filter(PLZ %in% dat$postcode)
ch <- ch%>%
  arrange(desc(as.numeric(PLZ)))
dat <- dat%>%
  arrange(desc(as.numeric(postcode)))
datmap <- bind_cols(dat, ch)

ch2 <- readOGR("location/PLZO_SHP_LV03/PLZO_PLZ.shp")#second link, to make the shape of the country
ch2 <- fortify(ch2)

a <- ggplot()+
geom_polygon(dat=ch2, aes(x=long, y=lat, group=group), colour="grey75", fill="grey75")+
geom_jitter(data=datmap, aes(x=E, y=N, group=FALSE, size=n), color=c("red"))+ #here I put geom_jitter, but geom_point is fine too
scale_size_continuous(range=c(0.7, 5))+
coord_fixed()
print(a)

先谢谢您的帮助!


您可以使用ggsave()保存最后一个图并调整用于点/线等的比例因子。试试这个:

ggplot(data = ch2) + 
  geom_polygon(aes(x=long, y=lat, group=group),
               colour="grey85", fill="grey90") +
  geom_point(data=datmap, aes(x=E, y=N, group=FALSE, size=n),
             color=c("red"), alpha = 0.5) +
  scale_size_continuous(range=c(0.7, 5)) +
  coord_fixed() +
  theme_void()

ggsave(filename = 'plot.pdf', scale = 2, width = 3, height = 3)

玩转scale参数(以及可选的宽度和高度),直到您对结果满意为止。

不使用geom_jitter():这将为您的点添加随机 XY 变化。要处理过度绘制,您可以尝试添加透明度 - 我添加了一个alpha为此的参数。我也用过theme_void()摆脱轴和背景。

Your shape file with map information is quite heavy: you can try a simple one with Swiss cantons, like this one http://www.arcgis.com/home/item.html?id=a5067fb3b0b74b188d7b650fa5c64b39.enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ggplot geom_point随窗口大小变化大小 的相关文章

  • 将非平凡函数应用于 data.table 的有序子集

    Problem 我正在尝试使用我新发现的 data table 功能 永久 来计算一堆数据的频率内容 如下所示 Sample Channel Trial Voltage Class Subject 1 1 1 196 82253 1 1 1
  • 从 Cox PH 模型预测概率

    我正在尝试使用 cox 模型来预测时间 称为停止 3 后失败的概率 bladder1 lt bladder bladder enum lt 5 coxmodel coxph Surv stop event rx size number cl
  • 网页抓取(R 语言?)

    我想获取中间栏中的公司名称this http www consumercomplaints in bysubcategory mobile service providers page 1 html页面 以蓝色粗体书写 以及登记投诉者的位置
  • 用于更改向量中元素顺序的闪亮小部件

    在很多网站上 您都有一个拖放界面来更改列表中元素的顺序 我正在寻找类似的东西闪亮 我希望用户能够拖放列表中的元素 通过更改顺序来更改优先级 现在我有一个滥用的解决方案selectizeInput 这是可行的 但当选择列表变得更大时 它很快就
  • R markdown 引文标识符

    R markdown 允许使用 YAML 元数据部分中的参考书目元数据字段指定参考书目文件 例如 title Sample Document output html document bibliography bibliography bi
  • 在多面图中用 N 注释 x 轴

    我正在尝试生成一些按治疗条件和访问次数细分的数字结果的箱线图 每个框中的观察次数都放在图下方 并且也标记了访问次数 这里有一些虚假数据可以用来说明 我举了两个我尝试过但不太有效的例子 library ggplot2 library plyr
  • (R 错误)错误:cons 内存耗尽(达到限制?)

    我正在处理大数据 并且有一个 70GB 的 JSON 文件 我正在使用 jsonlite 库将文件加载到内存中 我尝试过 AWS EC2 x1 16large 机器 976 GB RAM 来执行此负载 但 R 因错误而中断 Error co
  • 以计数矩阵作为响应的多项式

    根据帮助multinom 包裹nnet 响应应该是一个因子或具有 K 列的矩阵 它将被解释为每个 K 类的计数 我尝试在第二种情况下使用此函数 但出现错误 这是我所做的示例代码 response lt matrix round runif
  • 如何对工作区中的元素运行循环?

    gt ls 1 A anorex 1 anorexia B byMonth C clotting 8 counts d D d AD DelayByDay delayed glm D93 15 glmout groups h housing
  • 当添加列较少时追加到现有 SQLite 表,而不将数据库读入 R

    是否有一些简单的方法 无论是在 SQL 端还是在 R 端 将 data frame 附加到具有更多列的现有表 缺失的列应该用 NA 填充 如果它能够优雅地处理比表 1 列数更多的表 2 那么会加分吗 library RSQLite Crea
  • R 中的 Mapdeck 包 - add_grid 似乎未渲染任何内容

    Problem The add gridR 中的函数mapdeck包很精彩 然而 遵循CRAN 文档 https cran r project org web packages mapdeck mapdeck pdf 我似乎无法获得任何数据
  • 如何使用 tidyr 将向量中字符串中的每个字符分隔到一列中

    我想将向量中的每个字符串分成列 但我做不到 library tidyr library dplyr df lt data frame x c abe bas dds eer df gt separate x c A B C sep 1 我想
  • 如何将环境变量传递给shinyapps

    我想将安全参数传递给shinyapps io部署 以便我的应用程序可以通过以下方式获取它们 Sys getenv PASSWORD X 我找不到任何相关内容deployApp函数在rsconnect包裹 您可以使用Renviron网站 or
  • 粘贴两个 data.table 列

    dt lt data table L 1 5 A letters 7 11 B letters 12 16 L A B 1 1 g l 2 2 h m 3 3 i n 4 4 j o 5 5 k p 现在我想粘贴列 A 和 B 以获得一个新
  • plot xts if (on == "years") { 中的错误:缺少 TRUE/FALSE 需要的值

    我正在尝试绘制 xts 对象 但出现有关年份的错误 xts 对象只有一个数值和一个 POSIXct 索引 下面的代码显示了 xts 和尝试绘图时的错误 关于需要对 xts 对象做什么才能正确绘制的任何想法 xTest lt as xts 3
  • 访问动态创建的 Shiny 模块的返回值

    我正在寻找构建一个闪亮的应用程序 它动态创建返回简单表单的模块 通过 callmodule 我有两个未解决的问题 希望得到一些指导 首先 当向用户提供多个表单 通过单击按钮 时 先前呈现的表单上的值将恢复为默认值 如何停止这种行为 以便值保
  • 如何在折线图中显示 Sep-12 格式的数据并抑制网格线和灰色背景?

    我正在努力使日期格式正确 数据已经是melt 格式 数据中有四个变量碰巧共享相同的数据 我只是想绘制一个简单的四线折线图 每个变量作为一条单独的线 并将 Sep 12 显示为最新数据点 我正在使用旧的 ggplot 请随意 我有两个问题 第
  • 如何缩放(标准化)每列内的 ggplot2 stat_bin2d 值(按 X 轴)

    我有一个 ggplot stat bin2d 热图 library ggplot2 value lt rep 1 5 1000 df lt as data frame value df group lt rep 1 7 len 5000 d
  • 计算数据帧 R 中字符串的频率

    我想计算数据框中某些字符串的频率 strings lt c pi pie piece pin pinned post df lt as data frame strings 然后我想计算字符串的频率 counts lt c pi in pi
  • linux下无法安装Cairo包

    我在本地下载该软件包并尝试安装它 但出现此错误 R CMD INSTALL l usr local lib64 R library Cairo 1 5 1 tar gz 我得到他的错误 checking for PNG support in

随机推荐