这是我的问题.
现在,我可以使用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所示.
用于绘制某些属性的二维空间分布,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)
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) 我尝试将我的 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 \nRun Code Online (Sandbox Code Playgroud)\n\n由于特权\xef\xbc\x8c 的限制,我不得不将其安装在非默认搜索目录(例如/usr/local/lib)中。
我添加后/disk2/hyf/lib/glib-2.7/lib,LD_LIBRARY_PATH问题就出现了。
输入ls, ll, vim等正常命令,都会出现错误Segmentation fault。
我在网上搜索了一下,发现有两个原因可能与该Segmentation fault问题有关。(1)glibc-2.7/lib与系统的gcc/lib不兼容(centos系统的gcc版本是gcc 3.4,我也成功安装了gcc-4.9作为替代)
(2) glibc-2.7安装在非默认路径。
\n\n由于任何命令都无法正常工作,我不知道如何解决我的问题。如何解决这个问题?
\n\n更重要的是,我的错误是否会影响其他用户(我是 Linux 集群的非 sudo 用户)?
\n显示具有非支配解决方案的两个目标,我可以绘制散点图来说明它。
这是我使用不同颜色来显示解决方案集的示例:
但我读过这个github存储库,它的可视化方法非常好,可以使用网格来达到最佳解决方案,如下所示:

但没有任何绘制该图的参考代码。我已经尝试重建它但失败了。
任何建议或参考都是值得赞赏的!
我已经安装了基于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 笔记本中。如何解决这个问题?
>>>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日=====
从下面的答案,我在这里收集一些有用的代码
d3 = np.concatenate([d3, d4.reshape(1, d3.shape[0],d4.shape[1])])
d3 = np.vstack([d3, d4[None, ...]])
在通过读取681 .csv文件测试构建3-d阵列(681x50x60)之后,
第二种方法比同一台笔记本电脑上的第一种方法(28秒)更有效(19秒).
当我绘制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?
我在这里有类似的问题
这个问题与tiff数据类似,我想找到一种更通用的方法来处理它.
例如:
http://i4.tietuku.com/060fe38e9ccf6daf.png
这是随机分布式数据集群到网格网络的示例图片 http://i4.tietuku.com/a4c1355413f8cdbc.png
*红点:原始数据
*蓝点:网格表示二维数组*绿色圆圈:找到每个红点最近的蓝点并求它们.
*在这个问题中,区别在于原始数据也是2-d numpy数组.
与我在这里的另一个问题类似,我将2-d散点指向最近的网格点.我很欣赏@HYRY支持的答案,它改进了我的代码.
在那个问题中,我使用KD树算法来查找每个原始点数据的最近网络节点.结果显示在这里:http:
//i4.tietuku.com/1a420c48ed7bcb1c.png
我认为必须有一些更简单的方法来重塑结构化的2-d numpy数组而不是随机的2-d散点.
感谢@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) 有一个形状为 (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 ×9
matplotlib ×6
arrays ×3
numpy ×3
colormap ×2
gis ×2
centos ×1
gcc ×1
glibc ×1
grib ×1
jupyter ×1
linux ×1
optimization ×1
python-2.7 ×1
python-3.x ×1
raster ×1
system ×1
tiff ×1