小编Han*_*gzu的帖子

使用matplotlib绘制地形作为背景

这是我的问题.

  • 地形由这些地区的海拔高度表示.我上传到这里

现在,我可以使用matplotlib中的contourf将地形绘制为背景.

fig =plt.figure(figsize=(10,8))
ax = plt.subplot()
xi,yi = np.linspace(195.2260,391.2260,50), np.linspace(4108.9341,4304.9341,50)


height = np.array(list(csv.reader(open("terr_grd.csv","rb"),delimiter=','))).astype('float')

terrf = plt.contourf(xi, yi, height,15, cmap=plt.cm.Blues)
terr = plt.contour(xi, yi, height, 15,
             colors='k',alpha=0.5)
plt.clabel(terr, fontsize=9, inline=1)
Run Code Online (Sandbox Code Playgroud)

http://i13.tietuku.com/1d32bfe631e20eee.png

作为背景,它可能会影响叠加图(不同颜色混合在一起).

我在上面上传的书中找到的图是一个很好的可视化艺术.

http://i11.tietuku.com/4d4178c16eb7aaf6.png

作为背景的地形根本不会打扰覆盖的排水盆(绿色).

所以,如何使用matplotlib绘制这种类似的阴影地形,我尝试了一些色彩图,但我无法得到相似的绘图.

更新

我已经使用以下代码尝试了alpha设置:

# Z is 2-d array represent the value of each grid    
CS = plt.contourf(xi,yi, Z,2, cmap=plt.cm.Greens,
              vmax=abs(Z).max(), vmin=abs(Z).min(),alpha=0.8,zorder = 3)
Run Code Online (Sandbox Code Playgroud)

该图显示如下:

http://i11.tietuku.com/5bb0b4cb0102ec32.png

无论我使用的数据与流域区域有什么不同.我所承诺的是将地形浮雕描绘得更加逼真,如图2所示.

python gis visualization matplotlib matplotlib-basemap

5
推荐指数
1
解决办法
651
查看次数

当我使用不同的绘图类型设置“vmin”和“vmax”时的不同结果

背景

用于绘制某些属性的二维空间分布,contourf和pcolormesh都是可视化形式的不错选择。

由于绘图数据的实际含义,我想将零附近的值设置为白色(例如,[-0.2,0.2]);零值应该是中点

从问题 [ Defining the midpoint of a colormap in matplotlib,我尝试设置vmin和vmax调整颜色图。

数据导入

import pygrib
grib='fnl_20141110_12_00.grib2';
grbs=pygrib.open(grib)
grb = grbs.select(name='Vertical velocity')[8]#Vertical velocity
data=grb.values
lat,lon = grb.latlons()
Run Code Online (Sandbox Code Playgroud)

1. 等值线图

m = Basemap(llcrnrlon=110,llcrnrlat=34,urcrnrlon=122,urcrnrlat=44,projection='mill')
fig=plt.figure(figsize=(8,4))
ax1 = plt.subplot(121)
x, y = m(lon, lat)
cs = m.contourf(x,y,data,cmap=plt.cm.RdBu)

cb = m.colorbar(cs,"bottom", size="5%", pad="8%")
ax1.set_title("Original",fontsize = 15)

ax2 = plt.subplot(122)
cs = m.contourf(x,y,data,cmap=plt.cm.RdBu,vmin = -1.8,vmax =1.8)
cb = m.colorbar(cs,"bottom", size="5%", pad="8%")
ax2.set_title("symmetrical vmin & vmax",fontsize …
Run Code Online (Sandbox Code Playgroud)

python matplotlib grib matplotlib-basemap colormap

5
推荐指数
0
解决办法
1757
查看次数

安装glibc 2.7后出现分段错误

我尝试将我的 glibc 库更新到 2.7 版本。我的编译过程如下所示:

\n\n
 ../configure --disable-debug --disable-dependency-tracking CFLAGS=\\\n "-U_FORTIFY_SOURCE -O2 -fno-stack-protector" --disable-silent-rules\\\n --prefix=/disk2/hyf/lib/glib-2.7 \n\n make & make install  \n
Run Code Online (Sandbox Code Playgroud)\n\n

由于特权\xef\xbc\x8c 的限制,我不得不将其安装在非默认搜索目录(例如/usr/local/lib)中。

\n\n

我添加后/disk2/hyf/lib/glib-2.7/lib,LD_LIBRARY_PATH问题就出现了。

\n\n

输入ls, ll, vim等正常命令,都会出现错误Segmentation fault。

\n\n

我在网上搜索了一下,发现有两个原因可能与该Segmentation fault问题有关。(1)glibc-2.7/lib与系统的gcc/lib不兼容(centos系统的gcc版本是gcc 3.4,我也成功安装了gcc-4.9作为替代)

\n\n

(2) glibc-2.7安装在非默认路径。

\n\n

由于任何命令都无法正常工作,我不知道如何解决我的问题。如何解决这个问题?

\n\n

更重要的是,我的错误是否会影响其他用户(我是 Linux 集群的非 sudo 用户)?

\n

linux gcc glibc centos system

5
推荐指数
1
解决办法
1万
查看次数

一个数字呈现多个不同大小的饼图

在此处输入图片说明

上图说明了我的目的。

在MatPlotLib中绘制饼图很容易。

但是如何在一个图形中绘制多个饼图以及每个图形的大小取决于我设置的值。

任何建议或建议,不胜感激!

python visualization matplotlib

5
推荐指数
2
解决办法
3529
查看次数

使用 matplotlib 绘制帕累托前沿

显示具有非支配解决方案的两个目标,我可以绘制散点图来说明它。

这是我使用不同颜色来显示解决方案集的示例:

在此输入图像描述

但我读过这个github存储库,它的可视化方法非常好,可以使用网格来达到最佳解决方案,如下所示: 在此输入图像描述

但没有任何绘制该图的参考代码。我已经尝试重建它但失败了。

任何建议或参考都是值得赞赏的!

python optimization matplotlib genetic-algorithm python-2.7

5
推荐指数
0
解决办法
3913
查看次数

jupyter Notebook的Python3环境无法导入已安装的包

我已经安装了基于Python 2.7的Anaconda软件,Python 3.4内核也已经配置完毕。

使用pip3 install xxx,我可以安装一些适用于 Python 3 环境的包。在ipython3中,它们可以很好地导入。但是,在jupyter笔记本的Python 3内核中,这些包无法成功导入。

# Python 3 environment inside the jupyter notebook
import numpy as np
> No module named 'numpy'
Run Code Online (Sandbox Code Playgroud)

我的内核路径:

Available kernels:
  ir            /Users/HYF/Library/Jupyter/kernels/ir
  javascript    /Users/HYF/Library/Jupyter/kernels/javascript
  python2       /Users/HYF/anaconda/share/jupyter/kernels/python2
  python3       /usr/local/share/jupyter/kernels/python3
Run Code Online (Sandbox Code Playgroud)

jupyter内核中的Python3环境显示如下:

import sys
sys.executable
>'/Users/HYF/anaconda/envs/py35/bin/python'
Run Code Online (Sandbox Code Playgroud)

我认为问题是 python3 包路径未加载到 jupyter 笔记本中。如何解决这个问题?

python python-3.x jupyter jupyter-notebook

5
推荐指数
2
解决办法
2万
查看次数

将二维阵列与现有的三维阵列相结合

>>>d1.shape
>>>(18,18)
>>>d2.shape
>>>(18,18)
>>>d3 = array([d1, d2])
>>>d3.shape
>>>(2, 18, 18)  
Run Code Online (Sandbox Code Playgroud)

如果我已经获得了具有形状的d3(2,18,18)并且我想将另一个2-d阵列d4(18x18)添加到d3中以制作3-d阵列(3,18,18).
我该怎么办?

==== 2015年12月31日=====

摘要

从下面的答案,我在这里收集一些有用的代码

  1. d3 = np.concatenate([d3, d4.reshape(1, d3.shape[0],d4.shape[1])])

  2. d3 = np.vstack([d3, d4[None, ...]])

PS

在通过读取681 .csv文件测试构建3-d阵列(681x50x60)之后,
第二种方法比同一台笔记本电脑上的第一种方法(28秒)更有效(19秒).

python arrays numpy

4
推荐指数
1
解决办法
147
查看次数

如何使用mpl_toolkits.basemap.cm中的colormap创建离散颜色条?

当我绘制pcolormesh情节使用颜色表from matplotlib.cm(如"jet","Set2"等),我可以使用:

 cMap = plt.cm.get_cmap("jet",lut=6)    
Run Code Online (Sandbox Code Playgroud)

colorbar显示如下:

在此输入图像描述

但是,如果我要拨打的颜色表从Basemap包装(如GMT_drywet,GMT_no_green等).我无法使用plt.cm,get_cmap这些色彩图并将它们分开.

是否mpl_toolkits.basemap.cm有这样一个类似的功能lut?

python numpy matplotlib matplotlib-basemap colormap

4
推荐指数
1
解决办法
1415
查看次数

如何更粗糙的二维阵列数据分辨率

我在这里有类似的问题
这个问题与tiff数据类似,我想找到一种更通用的方法来处理它.

我的问题

例如:

  • 形状为200x150的2维numpy阵列表示1 km x 1 km分辨率的人口密度数据.

http://i4.tietuku.com/060fe38e9ccf6daf.png

  • 我的目标:改变空间分辨率=> 5 km x 5 km分辨率

这是随机分布式数据集群到网格网络的示例图片 http://i4.tietuku.com/a4c1355413f8cdbc.png
*红点:原始数据
*蓝点:网格表示二维数组*绿色圆圈:找到每个红点最近的蓝点并求它们.
*在这个问题中,区别在于原始数据也是2-d numpy数组.

我的解决方案

  • 与我在这里的另一个问题类似,我将2-d散点指向最近的网格点.我很欣赏@HYRY支持的答案,它改进了我的代码.

  • 在那个问题中,我使用KD树算法来查找每个原始点数据的最近网络节点.结果显示在这里:http:
    //i4.tietuku.com/1a420c48ed7bcb1c.png

  • 我认为必须有一些更简单的方法来重塑结构化的2-d numpy数组而不是随机的2-d散点.

添加2016-01-09

感谢@Praveen的回答.
我有另一种使用scipy interpolate 2d函数的方法.

这是我的代码:

 xi  = np.linspace(x_map1,x_map2,pop.shape[1])
 yi  = np.linspace(y_map1,y_map2,pop.shape[0])
 hfunc = interpolate.interp2d(xi,yi,pop)

 x_grid  = np.linspace(x_map1,x_map2,new_shape_x)
 y_grid  = np.linspace(y_map1,y_map2,new_shape_y)

 new_pop = np.zeros(new_shape_x * new_shape_y)
 t = 0
 for i in range(0,new_shape_y,1):
     for j in range(0,new_shape_y,1):
         new_pop[t] = hfunc(x_grid[j],y_grid[i])
         t+=1
 new_pop = …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy matplotlib

4
推荐指数
1
解决办法
1771
查看次数

在 Python 中将数组保存到光栅文件的最简单方法

有一个形状为 (100, 100) 的二维数组,我想将它以.tiff格式保存到光栅文件中。

我可以使用gdal包来读取tiff已经存在的文件。但是我仍然找不到将二维数组转换为 tiff 文件的简单方法。

使用plt.imsave("xx.tif",array)或

def array_to_raster(array):
    """Array > Raster
    Save a raster from a C order array.
    :param array: ndarray
     """
    dst_filename = 'xxx.tiff'
    x_pixels = 100  # number of pixels in x
    y_pixels = 100  # number of pixels in y
    driver = gdal.GetDriverByName('GTiff')
    dataset = driver.Create(
           dst_filename,
           x_pixels,
           y_pixels,
           1,
           gdal.GDT_Float32, )
    dataset.GetRasterBand(1).WriteArray(array)
    dataset.FlushCache()  # Write to disk.
    return dataset, dataset.GetRasterBand(1)  
Run Code Online (Sandbox Code Playgroud)

他们都没有达到我的目标。第二种方法是从这里改编的,它可以将数组转换为 …

python arrays gis tiff raster

4
推荐指数
1
解决办法
9436
查看次数