我尝试做一个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")
如下图所示,这两个图是叠加的,这是我需要帮助的问题
添加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")
答案 0 :(得分:7)
绘制核密度估计值可能会更好吗?
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
data = np.random.multivariate_normal([0, 0], [(1, .6), (.6, 1)], 100)
f, ax = plt.subplots(figsize=(7, 7))
sns.kdeplot(data, shade=True, ax=ax)
答案 1 :(得分:1)
关于你的第一个问题:
您需要清除上一个绘图中的数据,在绘图之前应该执行以下操作:
plt.clf()
plt.close()
关于你的第二个问题:
要更改轴值,我建议使用extent
参数(参见this answer)。
e.g。类似的东西:
plt.imshow(h, origin = "lower", interpolation = "gaussian",extent=[-100,100,-75,75])
答案 2 :(得分:0)
您需要添加'范围'参数给你imshow命令。 imshow接受任意值的网格,但不知道尺寸。