Mathematica软件是美国的沃尔夫勒姆研究公司旗下的软件,在其数据库中没有把台湾划归于中国。
 作为一名爱国青年,我对此深表不满,因此在本例中让台湾出现在祖国的版图上了,不过程序却显得冗长了些。为了让程序易读,所以把绘图与数据分开来写。
 
 作为一名深爱数学的青年,我还是很推崇这个软件的,特别是Mathematica 9.0 这一最新版本。
 统计专业的同仁可能瞬间就会爱上这款神奇的软件。
 相比于上一版本,这一版本不但添加了自动填词功能还添加了函数参数的可视化操作。
 更振奋人心的是,在此版本中还可以从服务器上下载世界上各个国家和城市的基本数据 (人口、地图及坐标等),以及当前和以往的天气数据(风速、降水量及温度等)。

代码如下:

 (*绘制中国人口分布图*)

(*获取城市坐标*)
dataxy = Join[
   Reverse[CityData[#, "Coordinates"]] & /@ CityData[{All, "China"}], 
   Reverse[CityData[#, "Coordinates"]] & /@ CityData[{All, "Taiwan"}]];
(*获取城市人口*)
datap = Join[CityData[#, "Population"] & /@ CityData[{All, "China"}], 
   CityData[#, "Population"] & /@ CityData[{All, "Taiwan"}]];
(*计算人口最值及城市数量*)
mm = Max[datap];
nn = Length[datap];
datap = datap/mm;(*标准化*)
(*制做绘图数据*)
data = Table[{RGBColor[datap[[n]]^3, datap[[n]]^2, datap[[n]]], 
   Disk[dataxy[[n, ;;]], datap[[n]]]}, {n, 1, nn}];
(*添加中国地图*)
PrependTo[data, CountryData["China", "Polygon"]];
PrependTo[data, CountryData["Taiwan", "Polygon"]];
PrependTo[data, RGBColor[0.1, 0.9, 0]];
(*绘图,圆的半径越大颜色越浅表示该城市人口越多*)
Graphics[data, 
PlotLabel -> 
  Style[Framed["中国人口分布图 by 数学之路"], 16, Red, Background -> Yellow], 
Background -> Blue]

2013-05-10
 
评论
© 数学之路 | Powered by LOFTER