symlog规模上matplotlib.pyplot.pcolorfast边缘的长度不同

时间:2017-01-29 11:04:18

标签: python matplotlib

我正在尝试使用对数刻度创建彩色网格图。由于我想要包含从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()

不幸的是,边缘不太可预测地间隔到我知道如何输入数据的位置,事实上,边缘会根据缩放系数移动。

作为参考,这就是所有缩小的样子 For reference, this is what it looks like all zoomed out

这是你放大2到4区间时的样子 and this is what it looks like when you zoom into the interval from 2 to 4

正如你所看到的,当我放大时,网格边缘会移动。我也希望边缘以与轴标记相同的间隔放置,但是我没有在pyplot文档中找到任何有用的东西。

非常感谢任何帮助!

PS:使用线性而不是symlog缩放比例。使用xlim / ylim时也一样。

For reference, here's an image

1 个答案:

答案 0 :(得分:1)

使用matplotlib.pyplot.pcolormesh代替matplotlib.axes.Axes.pcolorfastpcolorfast的文档字符串表示它是实验性的

  

" ...它缺乏对轴日志缩放的支持......",

截至当前版本2.0.0。