【问题标题】:How to fix the size of a ggplot in R while saving it with png()?如何在使用 png() 保存时修复 R 中 ggplot 的大小?
【发布时间】:2015-05-07 04:38:44
【问题描述】:

地图大小与纬度/经度 38.31536111,-76.55011111 与地图不同 经纬度 59.5624775,-139.7410994(在地图上绘制点)

同时用 png() 保存

如何保持相同的大小?高宽不够?

编辑:完整代码

library(maps)
library(ggplot2)
data <- read.csv("data.csv", header=TRUE)
lat = data$lat
long = data$long
world<-map_data('usa')
sf<-data.frame(long=long,lat=lat)
p <- ggplot(height=600, width=800) +
geom_polygon( data=world, aes(x=long, y=lat,group=group)) 
p <- p + geom_point(data=sf,aes(long,lat),colour="white",size=1)
p

数据文件:

"lat","long"
59.5624775,-139.7410994
42.38748056,-94.61803333

如果我删除数据文件中的第一行,则地图大小与两行都存在时不同(更大)

【问题讨论】:

  • 我们肯定会喜欢一个可重现的例子。
  • 高度和宽度应在png() 中指定以控制图像大小,而不是在ggplot() 中。
  • ...一般而言,使用ggsave() 而不是png() 可能会有更好的结果

标签: r ggplot2


【解决方案1】:

你的代码有点乱,所以我把它改成了下面的可重现格式。 @joran 已经给出了解决方案 - 您需要在 png() 中指定大小。

library(maps)
library(ggplot2)
#specify size here
png("world.png",height=600,width=800)

#here is a way to create very simple data frame from you coordinates
data <- read.table(textConnection("
lat long 
59.5624775 -139.7410994 
42.38748056 -94.61803333"),header=TRUE,as.is=TRUE)
long=data$long
lat=data$lat
world <- map_data('usa')
sf<-data.frame(long=long,lat=lat)
ggplot() +
geom_polygon(data=world, aes(x=long, y=lat,group=group)) + 
geom_point(data=sf,aes(long,lat),colour="white",size=1)

#this saves png in your current directory
dev.off()

编辑:Ups,现在我在之前的代码中犯了一些错误,现在已经修复了。

【讨论】:

  • 我根据您的代码生成了两个图像,一个具有第一个纬度/经度,另一个具有纬度/经度。图像大小仍然不同。编辑:我的意思是,地图大小,图像大小是一样的。
  • 抱歉代码混乱。刚刚学习 R,我应该在发帖前把它清理干净。
  • 没关系。我更改了 sf
猜你喜欢
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 2022-12-01
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多