我正在尝试使用对数刻度创建彩色网格图。由于我想要包含从0到1的区域,我使用“symlog”作为比例而不是“log”。
fig, ax = plt.subplots()
Z = np.random.random(size=(RATE_EXPONENT + 1, BLOCK_EXPONENT + 1))
x_edges = [0] + [AXIS_BASE ** i for i in range(RATE_EXPONENT + 1)]
y_edges = [0] + [AXIS_BASE ** i for i in range(BLOCK_EXPONENT + 1)]
ax.set_xbound(0.0, MAX_FEE_RATE)
ax.set_ybound(0.0, MAX_CONFIRMATION_BLOCKS)
ax.set_xlabel('Fee rate in satoshis / byte')
ax.set_ylabel('Confirmation time in blocks')
ax.set_xscale('symlog')
ax.set_yscale('symlog')
ax.set_xticks(x_edges)
ax.set_yticks(y_edges)
ax.get_xaxis().set_major_formatter(ticker.ScalarFormatter())
ax.get_yaxis().set_major_formatter(ticker.ScalarFormatter())
colour_map = colors.LinearSegmentedColormap.from_list('GreenRed', ['red', 'green'], N=256)
ax.pcolorfast(x_edges, y_edges, Z, cmap=colour_map)
plt.show()
不幸的是,边缘不太可预测地间隔到我知道如何输入数据的位置,事实上,边缘会根据缩放系数移动。
作为参考,这就是所有缩小的样子
这是你放大2到4区间时的样子
正如你所看到的,当我放大时,网格边缘会移动。我也希望边缘以与轴标记相同的间隔放置,但是我没有在pyplot文档中找到任何有用的东西。
非常感谢任何帮助!
PS:使用线性而不是symlog缩放比例。使用xlim / ylim时也一样。
答案 0 :(得分:1)
使用matplotlib.pyplot.pcolormesh
代替matplotlib.axes.Axes.pcolorfast
。 pcolorfast
的文档字符串表示它是实验性的
" ...它缺乏对轴日志缩放的支持......",
截至当前版本2.0.0。