我正在使用pylab.figure
绘制热图。没有什么不寻常之处,我可以获得较小的热图尺寸。
问题:我想用大约30行和近2000列绘制热图。这是有效的 - 除了我不能让标签以可读的非重叠方式呈现。
我尝试使用figsize
和dpi
,但它所做的只是重新调整输出图像的结果分辨率。我实际上无法使图像足够宽,因此标签不再重叠。
代码摘录:
fig = pylab.figure(figsize = (640,30), dpi = 50)
axmatrix = fig.add_axes([ 0.1, 0.1, 0.85, 0.1 ])
axmatrix.tick_params(axis='both', which='major', labelsize = 8)
im = axmatrix.matshow(ordered_observations, aspect = 'auto', origin = 'lower', cmap = pylab.cm.YlGnBu)
axcolor = fig.add_axes([ 0.96, 0.1, 0.01, 0.1 ])
pylab.colorbar(im, cax = axcolor)
axmatrix.set_xticks(range(0, len(right) - 1))
axmatrix.set_yticks(range(0, len(left) - 1))
axmatrix.set_xticklabels(map(lambda name: name, list(right)[0:len(right) - 1]), rotation = 90)
axmatrix.set_yticklabels(map(lambda name: name, list(left)[0:len(left) - 1]))
fig.show()
fig.savefig('linkage.png')
谢谢,
金
编辑:ordered_observations
摘录:
[[ 0.5 0.5 0.5 ..., 0.5 0.5 0.5 ]
[ 1. 1. 1. ..., 0.5 0.5 0.5 ]
[ 1. 1. 1. ..., 0.5 0.5 0.5 ]
...,
[ 0.25 0.2 0.2 ..., 0.2 0.2 0.2 ]
[ 0.25 0.2 0.2 ..., 0.2 0.2 0.2 ]
[ 0.25 0.2 0.2 ..., 0.2 0.2 0.2 ]]
这是截断的pylab输出。真实数据是29 x 1835矩阵。
编辑2:它不是将我的数据存放在任何地方,而是认为最好通过以下代码片段生成测试数据。
import numpy
import random
ordered_observations = numpy.array([ [ random.random() for column in range(0, 1835) ] for row in range(0, 29) ])
编辑3:一个完整的工作示例。
import numpy
import random
import pylab
left = range(0, 29)
right = range(0, 1835)
ordered_observations = numpy.array([ [ random.random() for column in range(0, 1835) ] for row in range(0, 29) ])
fig = pylab.figure(figsize = (640,30), dpi = 50)
axmatrix = fig.add_axes([ 0.1, 0.1, 0.85, 0.1 ])
axmatrix.tick_params(axis='both', which='major', labelsize = 8)
im = axmatrix.matshow(ordered_observations, aspect = 'auto', origin = 'lower', cmap = pylab.cm.YlGnBu)
axcolor = fig.add_axes([ 0.96, 0.1, 0.01, 0.1 ])
pylab.colorbar(im, cax = axcolor)
axmatrix.set_xticks(range(0, len(right) - 1))
axmatrix.set_yticks(range(0, len(left) - 1))
axmatrix.set_xticklabels(map(lambda name: name, list(right)[0:len(right) - 1]), rotation = 90)
axmatrix.set_yticklabels(map(lambda name: name, list(left)[0:len(left) - 1]))
fig.show()
fig.savefig('linkage.png')
解决方法
看起来这是一个棘手的问题,所以我最终放弃了并使用了这个解决方法:
答案 0 :(得分:0)
我认为您可以使用以下代码将fontsize设置为较小
ax.tick_params(axis='both', which='major', labelsize=9)
但是,我可能不完全理解你的问题。您可以将ordered_observations
的内容保存在文件中并附加它。