我尝试做一个2D直方图,并通过一种插值获得"平滑"的图像.因此,我做了以下组合plt.hist2d和plt.imshow
import matplotlib.pyplot as plt
import numpy as np
data = np.loadtxt("parametre_optMC.dat", skiprows=50, usecols=(1,2))
h, x, y, p = plt.hist2d(data[:,0], data[:,1], bins = 20)
plt.imshow(h, origin = "lower", interpolation = "gaussian")
plt.savefig("test.pdf")
Run Code Online (Sandbox Code Playgroud)
正如您在下面的图片中看到的那样,这两个图是叠加的,这是我需要帮助的问题

添加clf有效,但我失去了轴尺寸:
import matplotlib.pyplot as plt
import numpy as np
data = np.loadtxt("parametre_optMC.dat", skiprows=50, usecols=(1,2))
h, x, y, p = plt.hist2d(data[:,0], data[:,1], bins = 20)
plt.clf()
plt.imshow(h, origin = "lower", interpolation = "gaussian")
plt.savefig("test.pdf")
Run Code Online (Sandbox Code Playgroud)

我有(H,ranges) = numpy.histogram2d()计算的结果,我正在尝试绘制它。
鉴于H我可以轻松地将其放入plt.imshow(H)以获得相应的图像。(见http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.imshow)
我的问题是生成的图像的轴是 的“细胞计数”H并且与 的值完全无关ranges.
我知道我可以使用关键字extent(如:更改 matplotlib imshow() 图形轴上的值)。但是这个解决方案对我不起作用:我的价值range不是线性增长(实际上它们呈指数增长)
我的问题是:我怎样才能输入rangein的值plt.imshow()?或者至少,或者我可以手动设置plt.imshow结果对象的标签值吗?
编辑extent不是一个好的解决方案。
我正在使用 matplotlib 在 python 中绘制二维数组,但在格式化刻度线时遇到问题。首先,我的数据目前被组织为带有(海拔、纬度)的二维数组。我正在绘制电子密度值作为高度和纬度的函数(基本上是特定时间的纵向切片)。
我想以 30 度为间隔标记从 -90 到 90 度的 x 轴,并使用另一个高程数组标记 y 值(每个模型运行都有不同的高程值,因此我无法手动分配任意高程)。我有一个带有纬度值的数组,另一个带有海拔值的数组都是一维数组。
这是我的代码:
from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
#load the netcdf file into a variable
mar120="C:/Users/WillEvo/Desktop/sec_giptie_cpl_mar_120.nc"
#grab the data into a new variable
fh=Dataset(mar120,mode="r")
#assign model variable contents to python variables
lons=fh.variables['lon'][:]
lats=fh.variables['lat'][:]
var1=fh.variables['UN'][:]
#specifying which time and elevation to map
ionst=var1[0,:,:,21]
ionst=ionst[0:len(ionst)-1]
#close the netCDF file
fh.close()
#Set the figure, size, and resolution
plt.figure(figsize=(8,6), dpi=100, facecolor='white')
plt.subplot(1,1,1)
plt.imshow(ionst, …Run Code Online (Sandbox Code Playgroud)