如何用excel制作中国地图热力数据图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用excel制作中国地图热力数据图相关的知识,希望对你有一定的参考价值。
就是我们高中毕业生不是各奔东西了嘛,我就想为班级做一个数据图。大概就是在中国地图的各个省份上能显示我们的同学的名字。看了好多网上的教程还是不会,说是在excel的中导入矢量图,但是cdr,ai的文件都不能加到excel中。各位大神支支招啊!!!
1、首先单击excel表单“插入”选项卡中“3D地图”列下的“打开3D地图”。
2、弹出的“启用数据分析加载项以使用此功能”框中单击“启用”。
3、等待地图加载程序打开后,单击“计划地图”选项。
4、要查找中国地图的位置,您可以使用鼠标滚轮进行放大和缩小。
5、单击上面的“文本框”,在每个区域中输入所需的文本内容。
6、如果需要添加数据标签,也可以进一步添加,得到图。
参考技术A1、首先点击excel表格“插入”选项卡中的“三维地图”栏目下的“打开三维地图”。
2、在弹出的“启用数据分析加载项以使用此功能”的提示框中点击启用。
3、等待开启地图加载程序后,点击“平面地图”选项。
4、找到中国地图的位置,可以使用鼠标滚轮放大缩小地图。
5、点击上方的“文本框”可以在其中输入需要的文字内容,定位到每个地区中。
参考技术B1.第一步是在创建热图之前准备矢量地图。以中国的行政地图为例。每个省的行政区划地图可以单独编辑。
2,然后确保Excel在启用之前已启用宏,并添加“开发工具”菜单。 “开发工具”菜单可以添加为:“文件” - “选项” - “自定义功能区” - 主选项卡 - 选中“开发工具”。
3.添加完成后,返回Excel页面,菜单栏中将出现“开发工具”菜单。
4.然后创建一个临时存储各种类型数据的单元格区域。请注意,您应该包含三个值:区域名称,与区域对应的数据结果以及与该区域对应的颜色。您可以选择任何空单元格来放置它。
5.接下来,通过选择适当的区域或单元格重命名每个区域或单元格,然后重命名它。例如,选择$ J $ 3单元格,然后在名称框中键入“Actreg”,然后按Enter键。此时,您可以重命名以下所有区域。
6,然后是第一个单元格,名为:Actreg,用于临时存储“当前区域”拼音名称,第二个单元格命名为:ActregValue,用于临时存储“当前区域”指示值。
7.接下来,需要分别设置$ J $ 4单元格和$ J $ 5单元格的公式,如下所示:
$ $Ĵ4:= VLOOKUP(ACTREG,REGDATA,2,0)
8.然后必须在“开发工具”菜单中插入“按钮”,注意在地图上方插入一个按钮。
9,然后选择按钮,并双击,这次打开Visual Basic编辑器,并输入以下代码:
Private Sub CommandButton1_Click()
对于i = 4到34
范围(“ActReg”)。值=范围(“sheet1!b”&i).Value
ActiveSheet.Shapes(范围( “ACTREG”)。值)。选择
Selection.ShapeRange.Fill.ForeColor.RGB = Range(Range(“ActRegCode”)。Value).Interior.Color
10.最后保存并关闭VBA编辑器,返回Excel界面,只需单击按钮,即可根据每个区域的值范围填充地图,以完成相应的颜色。
参考技术C1、首先第一步在制作热力地图前,这时候需要准备好一幅矢量地图,以中国行政地图为例,需要每个省份的行政区划地图都可以被单独编辑。
2、然后就是在制作前请确保你的Excel已经启用宏,并添加了“开发工具”菜单。“开发工具”菜单的添加方式为:“文件”——“选项”——“自定义功能区”——主选项卡——勾选“开发工具”即可。
3、接着进行添加完成后回到Excel页面,菜单栏中就会出现“开发工具”菜单。
4、然后要建立临时存放各类数据的单元格区域,注意的是要包括三个值:区域名、区域对应的数据结果,以及区域对应的颜色。可以选定任意空单元格进行放置即可。
5、接着就是对各区域或单元格进行重命名,即选择相应的区域或单元格然后对其进行重命名。例如选择$J$3单元格,再来名称框中输入“Actreg”并回车,这时候就可以将以下区域全部重命名。
6、然后将第一个单元格,命名为:Actreg,用于临时存放“当前区域”的拼音名,还有就是第二个单元格命名为:ActregValue,用于临时存放“当前区域”的指标值。
7、接着就是要对分别对$J$4单元格和$J$5单元格设置公式如下:
$J$4:=VLOOKUP(Actreg,RegData,2,0)
8、然后就是要在“开发工具”菜单选择插入“按钮”,注意在地图上方插入一个按钮。
9、接着就是进行选择按钮,并双击,这时候要打开Visual Basic编辑器,并输以下代码:
Private Sub CommandButton1_Click()
For i = 4 To 34
Range("ActReg").Value = Range("sheet1!b" & i).Value
ActiveSheet.Shapes(Range("ActReg").Value).Select
Selection.ShapeRange.Fill.ForeColor.RGB =Range(Range("ActRegCode").Value).Interior.Color
Next i
End Sub
10、最后进行保存并关闭VBA编辑器,回到Excel界面,只需要点击按钮,地图就可以根据各区域值的范围填充相对应的颜色了就完成了。
参考技术D 小博的日志《Excel版中国数据地图工具 》介绍了一个用excel做中国数据地图的办法,得到很多朋友的喜欢,并且都希望能详细了解制作方法,以便进一步DIY当地的数据地图。最近抽空整理了做法详解,供大家参考。因制作过程还是有些复杂的,如果有叙述不够清晰的地方,欢迎提出。-------------------------------------
作图思路:我们为每个区域准备一个自选图形,按照其数值大小,根据分档阀值、颜色图例,对自选图形填充以相应的颜色,完成一个热力地图。
地图图形的准备
首先,在网上找到一个矢量格式的地图文件。所谓矢量格式,是使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,其文件后缀名一般为.WMF、.AI、.EPS、.CDR等。Excel可以读取.WMF格式的文件,其他格式的一般需要专门的软件打开。导入Excel后,该地图可以打散为一个个的自选图形,每个自选图形对应一个区域。
如果你要做比较小的地区的数据地图,譬如武汉市分为江汉区、武昌区等,网上可能无法找到相应的矢量地图,这时我们可以自行绘制。
● 找到一个当地的地图图片,一般JPG格式的地图还是很好找的,导入Excel。
● 在放大视图下,使用绘图工具栏->自选图形->线条->自由曲线,按照地图轮廓进行勾描,每个区勾描成一个封闭小块,最后形成一个全市分区的自选图形地图。这个细活需要花一点功夫,但一次完成长期使用,还是值得的。
地图模型的构建
有了地图图形后,我们开始制作地图的引擎模型。
假设我们的数据源如下,例子文件中D列数据为各省2008年GDP总值。
1、为自选图形命名。
我们用每个省的拼音字母为其图形命名。如选中湖北省的图形,在左上角的名称框中输入湖北的拼音名hubei,回车,则这个图形被命名为hubei,后面会用这个名称来引用这个图形。逐一完成所有区域图形的命名。
很多公司需要按大区进行分析,如华东区、华南区等等,这时我们可以将某几个省的图形组合起来之后再命名。这时候你的数据源也要按华东区、华南区等进行组织。简言之,将大区作为一个区。
2、设置数据分档阀值和图例。
假设我们要把各省GDP数据分为5个层级进行分档填色,在I列设置填色样式,J列填入文字标签,注意I8:J12区域在后面将被拍照引用为图例。在L列设置分档阀值,填入J列标签的下限,M列是为引用准备的名称。
注意在设置分档间距、颜色深浅时,二者应该呈线性比例变化。推荐颜色的的设置方式是使用同一色调的不同饱和度。当有负数时,可从一个色调渐变到另一个色调。
3、为模型定义名称和公式。
RegData
=Datamap!$C$8:$D$38
源数据区域
ActReg
=Datamap!$K$17
临时存放“当前区域”的拼音名,如hubei
ActRegValue
=Datamap!$K$18
临时存放“当前区域”的指标值,如8633
=VLOOKUP(ActReg,RegData,2,FALSE)
ActRegCode
=Datamap!$K$19
临时存放“当前区域”的颜色代码,如color4
=VLOOKUP(ActRegValue,L8:M12,2,TRUE)
color1
=Datamap!$I$8
填色代码1,指向I8
color2
=Datamap!$I$9
填色代码2,指向I9
color3
=Datamap!$I$10
填色代码3,指向I10
color4
=Datamap!$I$11
填色代码4,指向I11
color5
=Datamap!$I$12
填色代码5,指向I12
4、制作填色按钮。
绘制一个按钮,为其指定如下宏代码。
―――――――――――――――――――――――
For i = 8 To 38 '为数据源的起始和结束行号,根据区域的多少来定
Range("ActReg").Value = Range("datamap!C" & i).Value
’将C列的拼音名填入“当前区域”,即K17
ActiveSheet.Shapes(Range("ActReg").Value).Select
’选中“当前区域”对应的图形
Selection.ShapeRange.Fill.ForeColor.RGB =
Range(Range("ActRegCode").Value).Interior.Color
’将选中的图形填充以“当前区域”的颜色代码所指向的单元格的填充样式
Next i
―――――――――――――――――――――――
如代码中的注释所说明,这段宏对每一个区域,将其拼音名填入K17,(这时K18会根据K17的拼音名,查找返回相应的指标值;K19又会根据K18的指标值,查找返回相应的颜色代码),然后宏把颜色代码作为名称所指向的单元格的填充样式复制到当前区域的图形进行填充。
5、点击按钮,当宏循环完成,每个区域的图形就被根据其数值大小,填充了相应的颜色。
我们将I8:J12拍照引用到地图左下角,作为图例。为方便复制引用,我们再将地图所在的AO10:AT30拍照引用到Q10处,要导出地图时,只需要复制这个拍照对象就可以了。
模型的使用
至此,一个层析填色型的热力地图工具就完成了。需要使用的时候,我们只需要3个步骤:
● 填入你的数据;
● 设置分档阀值和填充图例;
● 按下填色按钮,生成热力地图。
是不是非常惬意?呵呵,我们也可以象咨询顾问一样制作数据地图了,穷人的地图可一点也不差哟。
有的朋友可能希望在地图上增加区域名、指标值,可以通过在各省图形上添加文字,或绘制文本框,然后将其链接到相应的单元格。但一般建议不必添加,地图上少放些内容,会显得更加清晰。另外,如需增加分档层级,可根据以上过程,自行修改相应参数来扩展层级。
以上说明仍使用之前日志《Excel版中国数据地图工具 》中的例子文件,请至该日志下载参考。
(本文由ExcelPro的图表博客原创,转载请注明出处。ExcelPro的图表博客探索最专业的商务图表沟通之道,用Excel制作杂志级的商业图表,让普通人士也能极具专业精神。欢迎交流讨论!)追问
这个我看过N遍了,没懂。
就第一步,把矢量图导入到EXCEL中就不行了,网上的矢量图大都是.cdr .ai的,导入EXCEL中根本显示不出来。
如何用 folium 绘制地图并在 python 中的地图旁边放置条形图?
【中文标题】如何用 folium 绘制地图并在 python 中的地图旁边放置条形图?【英文标题】:How can a plot a map with folium and place a bar graph next to the map in python? 【发布时间】:2020-07-18 19:32:07 【问题描述】:我有一个数据框,我一直在创建一个带有小部件的交互式条形图,以显示数据框的不同特征,我只是想用数据框中的纬度和经度来显示位置,但我不知道如何显示这些两个带有单个可视化的我知道在单独的可视化中绘制带有纬度和经度的标记很热,但是我怎样才能将它们并排绘制呢?
【问题讨论】:
我相信你可以使用 subplot 并在小部件中有两个图。一个带有条形图,另一个带有标记。 感谢您的建议,我能够绘制图表和图表下方的地图,但不能并排绘制,因为通过使用子图正在创建另一个图,这让我认为我不能将地图视为子图,还有什么其他的想法可以让它并排? 【参考方案1】:您需要将绘制的图形保存为图像,然后:
import os
from folium.plugins import FloatImage
img = ('your_path_to_image')
f_map = folium.Map ([# lat long from df])
image = (img, bottom = 40,left =65).add_to(f_map)
f_map.save()
【讨论】:
感谢您的建议,但是当我运行此代码时,它显示以下错误:image = (img, bottom = 40,left =65).add_to(plot_locations_map) ^ SyntaxError: invalid syntax 如果我取出底部和左侧部分,我会收到以下错误:---> 61 image = (img).add_to(f_map) 62 display(f_map) 63 AttributeError: 'str' object has no attribute 'add_to' 我在想也许我没有正确保存图像,我想在图像部分写什么= (“your_path_to_image”) ????【参考方案2】:有点旧,但我们现在有一个解决方案,使用 ipywidgets
from io import BytesIO
import matplotlib.pyplot as plt
import folium
from IPython.display import display
fig, ax = plt.subplots(1)
# do your figure work here
mp = folium.Map()
# do your folium map work here
# save the image to a file handler in memory
tmpfile = BytesIO()
fig.savefig(tmpfile, format='png')
# close the figure to avoid this being re-rendered automatically by jupyter
plt.close()
# display the image and map converting them to widgets
display(widget.HBox([
widget.Image(value=tmpfile.getvalue(), format='png', width='50%'),
widget.HTML(value=mp._repr_html_(), layout=widget.Layout(width='50%', height='97%', margin='3% 0 0 0'))
]))
【讨论】:
以上是关于如何用excel制作中国地图热力数据图的主要内容,如果未能解决你的问题,请参考以下文章