楼主: datarose
5142 28

[实际应用] 谁能帮我画一个日本的病床密度分布图哇,论文需要 [推广有奖]

  • 1关注
  • 0粉丝

高中生

97%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
454 点
帖子
26
精华
0
在线时间
34 小时
注册时间
2007-11-22
最后登录
2018-12-17

楼主
datarose 发表于 2015-2-25 11:39:38 |AI写论文
5论坛币
求助高手帮我画一个日本病床的密度分布图。
我是个R语言的白痴,因为论文需要想画一个日本各县人均病床密度的分布图,相关数据在附件中。
请帮我做一下图,简单讲讲怎么做的,然后把R的程序发给我,感激不尽

ditujp.JPG (103.91 KB)

地图

地图

distributation.zip
下载链接: https://bbs.pinggu.org/a-1735900.html

8.34 KB

分布数据

本附件包括:

  • distributation.xlsx

maps_2.3-9.zip

1.98 MB

mapdata_2.2-3.tar

44.64 MB

最佳答案

jz.mraz 查看完整内容

这是我目前用过的无问题的code: library(mapdata) library(fields) dat
关键词:分布图 感激不尽 相关数据 求助高手 关数据 分布图 日本 论文

沙发
jz.mraz 在职认证  发表于 2015-2-25 11:39:39
这是我目前用过的无问题的code:

library(mapdata)
library(fields)

dat <- read.csv('f:/tmp/distributation.csv', header=TRUE)
dat$Name <- tolower(dat$Name)


mn <- min(dat$Bed_density)
mx <- max(dat$Bed_density)
nc <- round(max(dat$Bed_density) - min(dat$Bed_density))*10
jet.colors <- colorRampPalette( c("aquamarine3", "pink") )
color <- jet.colors(nc)
indCol <- seq(mn, mx, length.out=nc)
dat$col <- apply(dat[,3, drop=FALSE], 1, function(x) color[which.min(abs(x - indCol))])

mapj <- map('japan')
denscol <- dat$col[match(tolower(gsub(':','',mapj$names)), dat$Name)]

jpeg('f:/tmp/tmp.jpeg')
map('japan', fill=TRUE, col=denscol)
image.plot(legend.only=T, zlim=c(mn, mx), col=color, legend.shrink=.2)
dev.off()


但是现在你面临两个问题:
一是你的R要调用目前这两个包版本不够高
二是读数据后tolower那一句理论上不会出错, 但是你那里出错了

你希望能怎么给你解决这个问题?

藤椅
jz.mraz 在职认证  发表于 2015-2-25 19:00:00
你要的是这个图么?

tmp.jpeg (14.87 KB)

需要: 1 个论坛币  [购买]

板凳
datarose 发表于 2015-2-25 20:21:17
jz.mraz 发表于 2015-2-25 19:00
你要的是这个图么?
没错,就是这个!
能把程序发给我嘛,多谢啦。
已经悬赏啦,附件还跟我收费[sweat]

报纸
jz.mraz 在职认证  发表于 2015-2-25 20:36:18
datarose 发表于 2015-2-25 20:21
没错,就是这个!
能把程序发给我嘛,多谢啦。
已经悬赏啦,附件还跟我收费
撸主:
我光是下载你的数据就用了三个币呢亲~ 而且1个币算收费么? 我只不过不懂那个按钮是干嘛的,试了一下,还很厚道地只写了个1. 这就别针对了.

回到正题: distribution.xlsx类型的数据读写比较恶心,我稍微改了一下数据形式. 改了一下文件首行, 转成csv格式

你的其他文件都没用上(百花了两个币~~~~~)

code假设数据存在f盘下的tmp文件夹中; 这个自己修改啊
tmp.rar (1.47 KB) 本附件包括:
  • ana.r
  • distributation.csv
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

地板
datarose 发表于 2015-2-25 20:43:11
jz.mraz 发表于 2015-2-25 20:36
撸主:
我光是下载你的数据就用了三个币呢亲~ 而且1个币算收费么? 我只不过不懂那个按钮是干嘛的,试了一下 ...
哈哈,多谢多谢,原来这么麻烦。
你花的币我都补给你,不过我最多也就11个。
还有,我是个彻彻底底的R菜鸟,可能有不懂的地方还要继续请教啊

7
jz.mraz 在职认证  发表于 2015-2-25 20:45:21
datarose 发表于 2015-2-25 20:43
哈哈,多谢多谢,原来这么麻烦。
你花的币我都补给你,不过我最多也就11个。
还有,我是个彻彻底底的R菜 ...
做人这么厚道呀! 谢谢啦! 其实多余的币我貌似没啥用处诶。 就觉得你这个东西我个人比较感兴趣。我可以退几个币给你么? 你都没论坛币了耶!

8
datarose 发表于 2015-2-25 21:04:37
jz.mraz 发表于 2015-2-25 20:36
撸主:
我光是下载你的数据就用了三个币呢亲~ 而且1个币算收费么? 我只不过不懂那个按钮是干嘛的,试了一下 ...
高手,刚运行了一遍报了一堆的错,貌似我没有fields这个package,你能发给我一下吗?
另外我的excel 表里那些县名是不是没有什么用处啊,只要按顺序排就会在地图里标上对应的颜色吗?
多谢啦。

> library(mapdata)
> library(fields)
Error in library(fields) : there is no package called ‘fields’
>
> dat <- read.csv('e:/tmp/distributation.csv', header=TRUE)
> dat$Name <- tolower(dat$Name)
Error in `$<-.data.frame`(`*tmp*`, "Name", value = character(0)) :
  replacement has 0 rows, data has 47
>
>
> mn <- min(dat$Bed_density)
> mx <- max(dat$Bed_density)
> nc <- round(max(dat$Bed_density) - min(dat$Bed_density))*10
> jet.colors <- colorRampPalette( c("aquamarine3", "pink") )
> color <- jet.colors(nc)
> indCol <- seq(mn, mx, length.out=nc)
> resCol <- ifelse(which.min(abs(dens -
+ dat$col <- apply(dat[,3, drop=FALSE], 1, function(x) color[which.min(abs(x - indCol))])
+
+ mapj <- map('japan')
Error: unexpected symbol in:
"
mapj"
> denscol <- dat$col[match(tolower(gsub(':','',mapj$names)), dat$Name)]
Error in gsub(":", "", mapj$names) : object 'mapj' not found
>
> jpeg('e:/tmp/tmp.jpeg')
> map('japan', fill=TRUE, col=denscol)
Error in polygon(coord, col = col, ...) : object 'denscol' not found
> image.plot(legend.only=T, zlim=c(mn, mx), col=color, legend.shrink=.2)
Error: could not find function "image.plot"
> dev.off()
null device
          1

9
nuomin 发表于 2015-2-25 21:13:26
jz.mraz 发表于 2015-2-25 20:36
撸主:
我光是下载你的数据就用了三个币呢亲~ 而且1个币算收费么? 我只不过不懂那个按钮是干嘛的,试了一下 ...
可以申请奖励,就在参与/回复主题按钮的右边有选择框,回复时选上,版主会奖励你100币

10
jz.mraz 在职认证  发表于 2015-2-25 21:18:49
datarose 发表于 2015-2-25 21:04
高手,刚运行了一遍报了一堆的错,貌似我没有fields这个package,你能发给我一下吗?
另外我的excel 表里 ...
install.packages('fields', depend=TRUE)

后面的程序都是基于之前的,前面报错了后面肯定就会呀
这是很简单的数据处理怎么贴上来一堆乱码?dat$Name <- tolower(dat$Name) 这一句不应该出错, 你看看你数据读对没有??

你这个改成:
dat <- read.csv('e:/tmp/distributation.csv', header=TRUE, stringsAsFactors=TRUE)
我在线等你debug完



中文的名字我没用, 就用了英文的

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 20:25