import matplotlib.pyplot as plt
import numpy as np
# generate 2 2d grids for the x & y bounds
y, x = np.meshgrid(np.linspace(-3, 3, 100), np.linspace(-3, 3, 100))
z = (1 - x / 2. + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)
# x and y are bounds, so z should be the value *inside* those bounds.
# Therefore, remove the last value from the z array.
z = z[:-1, :-1]
z_min, z_max = -np.abs(z).max(), np.abs(z).max()
fig, ax = plt.subplots()
c = ax.pcolormesh(x, y, z, cmap='RdBu', vmin=z_min, vmax=z_max)
ax.set_title('pcolormesh')
# set the limits of the plot to the limits of the data
ax.axis([x.min(), x.max(), y.min(), y.max()])
fig.colorbar(c, ax=ax)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
# Load data from CSV
dat = np.genfromtxt('dat.xyz', delimiter=' ',skip_header=0)
X_dat = dat[:,0]
Y_dat = dat[:,1]
Z_dat = dat[:,2]
# Convert from pandas dataframes to numpy arrays
X, Y, Z, = np.array([]), np.array([]), np.array([])
for i in range(len(X_dat)):
X = np.append(X, X_dat[i])
Y = np.append(Y, Y_dat[i])
Z = np.append(Z, Z_dat[i])
# create x-y points to be used in heatmap
xi = np.linspace(X.min(), X.max(), 1000)
yi = np.linspace(Y.min(), Y.max(), 1000)
# Interpolate for plotting
zi = griddata((X, Y), Z, (xi[None,:], yi[:,None]), method='cubic')
# I control the range of my colorbar by removing data
# outside of my range of interest
zmin = 3
zmax = 12
zi[(zi<zmin) | (zi>zmax)] = None
# Create the contour plot
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.rainbow,
vmax=zmax, vmin=zmin)
plt.colorbar()
plt.show()
6条答案
按热度按时间wgx48brx1#
带有参数
interpolation='nearest'
和cmap='hot'
的imshow()
函数应该可以执行您想要的操作。请查看
interpolation
参数详细信息,并参阅Interpolations for imshow和Image antialiasing。snvhrwxg2#
Seaborn是matplotlib的一个高级API,它负责大量的手动工作。
seaborn.heatmap
自动在图表的一侧绘制梯度等。您甚至可以绘制方阵的上/下左/右三角形。例如,相关矩阵是正方形且对称的,因此绘制所有值将是多余的。
p3rjfoxz3#
我将使用matplotlib的pcolor/pcolormesh函数,因为它允许数据的非均匀间距。
示例取自matplotlib:
swvgeqrz4#
对于一个2D的
numpy
数组,简单地使用imshow()
可能会帮助你:此代码生成一个连续的热图。
您可以从here中选择另一个内置
colormap
。dldeef675#
下面是如何从csv中执行此操作:
其中
dat.xyz
的形式为z9gpfhce6#
使用
matshow()
(它是imshow
的 Package 函数)设置有用的默认值以显示矩阵。https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.matshow.html
这只是一个方便的函数,它 Package imshow来设置有用的默认值,以显示一个矩阵。
origin='upper'
。interpolation='nearest'
。aspect='equal'
。