如何使chaco图使用预定义的色谱图比例?

时间:2014-05-29 19:27:09

标签: python traits color-mapping chaco

我有一组数据表示多个时间点的热电偶值。使用Chaco我已设法绘制热电偶位置的热图,其中有一个滑块可让我选择我想要显示的时间步长。这样做的目的是比较数据集随时间的变化情况。

我遇到的问题是色谱图比例根据屏幕上显示的最大值和最小值而变化,但我希望色彩图比例保持固定的预定最小值和最大值。使用Chaco和Traits有一种简单的方法吗?我查看了Chaco文档,但我找到的所有示例都没有涵盖这种情况。

为简单起见,这里是我的代码的简化副本。我已经用生成的相同形状的数据集替换了我的数据,具有相同的值min和max。

import numpy as np
from enable.api import *
from chaco.shell import *
from traits.api import *
from traitsui.api import *
from chaco.api import *
from chaco.tools.api import *

## Random Data
data11 = np.ones([3,5,100])
print data11.shape
for i in range(3):
    for j in range(5):
        for k in range(100):
            data11[i,j,k] = np.random.random_integers(1100)

class heatplots(HasTraits):
    plot = Instance(Plot)
    time = Range(1,99)

    traits_view = View(Item('time'),
                        Item('plot', editor=ComponentEditor()),
                        width=1000, height=600, resizable=True, title='heatmap')


    def datamaker(self):  ## Setting the data time
        t = self.time

        ## Defining the data picker sources
        self.data = data11[...,...,t]

    def heatplotter(self):  ##Making the Plots
        ## The first heatmap                
        self.plotdata1 = ArrayPlotData(hm1 = self.data)
        plot1 = Plot(self.plotdata1)
        plot1.img_plot("hm1", colormap=hot)
        self.plot = plot1

    #_heatplotter()  
    @on_trait_change('time')
    def _new_time(self):
        self.datamaker()
        self.heatplotter()

    def start(self):        
        self._new_time()
        self.configure_traits()

thing = heatplots()
thing.start()

如果我的某些格式化看起来很奇怪或可能是因为我的完整情节包含一个数据贴纸,我可以在数据集之间进行选择,并且它在HPlotContainer中并排有2个热图。我删除了它,因为它与我的问题无关。

感谢您的时间。

0 个答案:

没有答案