【问题标题】:Heatmap sizing problem when implemented in tkinter在 tkinter 中实现时的热图大小问题
【发布时间】:2019-09-07 15:39:11
【问题描述】:

我正在尝试在 tkinter 中实现 pcolor 热图,但即使输入的数据是 20x20 大小的矩阵,它们似乎也被拉伸了,我希望它们像它们应该的那样是正方形的

图片: https://drive.google.com/file/d/1VBSUM8p3HeacW7wQJaCmR8ocrF0WYqBP/view

起初我将 figsize 调用为一个均匀的大小,但它对热图的大小没有任何影响。然后,我调用了 axs.set_aspect = True,这实际上使热图呈方形,但也使它们的大小显着缩小。

然后我更改了包含热图的画布背景。我发现画布的大小不是正方形的,所以我怀疑是画布的大小是罪魁祸首。但是,无论我给画布什么宽度/高度,它的大小仍然不会改变???

self.frame1 = Frame(self) 
self.frame1.pack() 
self.cvs_plt = LabelFrame(self.frame1, bg = "white")
self.cvs_plt.pack()
data1 = np.random.randn(20, 20)

self.fig = self.drawHeatMap2(data1)
self.fig_cv = FigureCanvasTkAgg(self.fig, self.cvs_plt)
self.fig_cv.get_tk_widget().pack()

def drawHeatMap2(self, data1):
    fig, axes = plt.subplots(1, 2, sharey=True)
    names = ["Actual", "Expected"]
    a = []
    for i in range(2):
        pcm = axes[i].pcolor(data1, cmap = "viridis_r")
        axes[i].set_title(names[i])
        axes[i].set_aspect("auto", "datalim", share = True)
        cb = fig.colorbar(pcm, ax = axes[i])
        a.append(cb)
    a[0].ax.set_visible(False)

【问题讨论】:

  • 在一个地方卡了2天后,在我发布这个问题后,我回去玩包装,你猜怎么着,一直是figurecanvastkagg。由于某种原因,它的大小是预设的
  • 如果此问题不再存在,您可能需要考虑删除此问题。
  • 您能否发布您对自己问题的回答以帮助他人?或者,如果不再相关,请删除您的问题。

标签: python matplotlib tkinter heatmap


【解决方案1】:
    tkAgg = FigureCanvasTkAgg(self.fig, self.cvs_plt)

    self.fig_cvs = tkAgg.get_tk_widget()
    self.fig_cvs.config(width = 1000)
    self.fig_cvs.pack()

最初,我认为 FigureCanvasTkAgg 会返回一个 tkinter 对象。事实证明它没有,而 get_tk_widget() 正是这项工作。在获得 tk 对象即 pyplot 后,您可以使用 config() 以任何您喜欢的方式操作它

【讨论】:

    猜你喜欢
    • 2012-05-09
    • 1970-01-01
    • 2021-03-15
    • 2021-09-23
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多