【问题标题】:Creating ticks in a matplotlib heatmap based on range of values [duplicate]根据值范围在matplotlib热图中创建刻度[重复]
【发布时间】:2015-04-12 06:35:01
【问题描述】:

我正在 matplotlib 中创建一个热图,其中 x 和 y 轴是测量的一些参数,颜色代表测量值。 Matplotlib 根据值的索引自动给出坐标轴刻度。例如,如果在 x 轴上我测量 50 个不同的值,刻度将从 0 到 50。但是,此参数的实际值例如从 -30 到 80,我希望 matplotlib 基于此创建刻度最小值和最大值。

我尝试过使用 set_xticks 但这需要刻度的位置以及它们的标签。我在想我应该能够只给 matplotlib 一个最小值 -34 和最大值 67 并让它在适当的位置创建漂亮的刻度,但我无法找到如何。

【问题讨论】:

    标签: python matplotlib heatmap


    【解决方案1】:

    在对 matplotlib 网站上的示例进行一些挖掘之后,我在 imshow 中发现了这个名为 extent 的选项,您可以在其中将默认的从零开始的坐标替换为您自己的两个轴的最小值和最大值的值。

    【讨论】:

      【解决方案2】:

      pyplot.xlim() 或 pyplot.figure.set_xlim() 在这种情况下不起作用吗?直接说:

      import matplotlib.pyplot as plt
      plt.xlim(-30,80)
      plt.ylim(0,100) #Or whatever
      

      据我所知,set_xticks 函数太复杂了。有了那个,您可以指定要放置的内容作为刻度标签等。例如,如果您想将数字系列与一系列字母相关联。例如:

      x = [-8,-6,-4,-2,0,2,4,6,8]
      labels = ['K2','K4','K6','K8','M0','M2','M4','M6','M8']
      plt.xticks(x, labels)
      

      是我个人用来将整数转换为恒星光谱类型的一种(这是相关的,因为我是一名天文学家;p)。

      希望这会有所帮助。

      `

      【讨论】:

      • 感谢您的评论!然而 set_xlim 函数只会改变您正在查看的图形部分,仍然使用像素坐标like this。我用我找到的解决方案发布了我自己问题的答案。
      • 嗯,我在另一篇文章中看到了您的解决方案,但我不知道这与 set_xlim 有什么区别。我总是使用 xlim 来约束我的轴,那么您的第一个情节与您在答案中提供的情节之间到底有什么区别?我很好奇,因为我以为我理解了你的问题,但我不确定了:p
      • Imshow 采用数据矩阵并根据矩阵的维度为轴分配值。我希望轴显示用于获取可以使用范围选项完成的值的实际参数。但是我现在已经在使用 pcolor 函数了,它需要两个数组作为轴,然后是一个矩阵作为数据值
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 2019-10-17
      相关资源
      最近更新 更多