我有一些数据想要绘制为热图,它本质上是一个 50x50 的 numpy 数组。因此,热图轴标签的范围从 0 到 50,但实际上我希望轴标签从 -114 到 114,因为这是数据的范围。然而,当我设置刻度标签时,它们最终会聚集在轴上(见图)。当我把线ax.set_xticks(ticks)ax.set_yticks(ticks)热图最终被缩放(见图)。我已经输入了我的代码和一些示例数据,也许有人可以发现我做错了什么。import sysimport numpy as npimport pandas as pdimport matplotlibimport matplotlib.pyplot as pltimport osimport cv2 as cvimport seaborn as sns;filepath = sys.argv[1]drive, path_and_file = os.path.splitdrive(filepath)path, file = os.path.split(path_and_file)line_width = 3font = {'family' : 'sans', 'weight' : 'normal', 'size' : 18}matplotlib.rc('font', **font)bagnames = ["hex_events_only.bag"]groundtruth = [-92, 0]noise_levels = ["-1.000000"]rewards = ["sos"]gt_angle = np.arctan2(groundtruth[0], groundtruth[1])gt_mag = np.linalg.norm(groundtruth, axis=0)print(gt_angle, gt_mag)for bagname in bagnames: print "==========", bagname, "==========" for reward in rewards: print " ---", reward, "--- " for noise_level in noise_levels: filename = filepath + "data_field_" + bagname + "_" + reward + "_" + noise_level print filename n_samples = (pd.read_csv(filename, delimiter="\t", skiprows=1, names=["vx", "vy", "measure"])).values x = n_samples[:, 0] y = n_samples[:, 1] z = n_samples[:, 2] yrange = int(np.ptp(x)) xrange = int(np.ptp(y)) x_values = np.unique(x).size y_values = np.unique(y).size num_ticks = 10 ticks = np.linspace(int(-yrange/2.), int(yrange/2.), num_ticks, dtype=np.int) img = np.reshape(z, (x_values, y_values)) img = img.T img = cv.resize(img, (yrange, xrange)) savename = filepath + "hmap_" + bagname + "_" + reward + "_" + noise_level
添加回答
举报
0/150
提交
取消