【问题标题】:Visualization of an array in matplotlibmatplotlib 中数组的可视化
【发布时间】:2022-01-03 20:02:27
【问题描述】:

我正在尝试使用 matplotlib(3.5 版本)在 Python 中可视化具有 (10, 10) 正方形形状的随机数组。我还包括 xaxis 和 yaxis 刻度,但 10 的刻度显示空数据。有人知道怎么解决吗?

这是我的代码:

import numpy as np

from matplotlib import pyplot as plt
import matplotlib.pylab as pylab
params = {'legend.fontsize': 'medium',
          'figure.figsize': (15, 5),
         'axes.labelsize': 'x-large',
         'axes.titlesize':'x-large',
         'xtick.labelsize':'x-large',
         'ytick.labelsize':'x-large'}
pylab.rcParams.update(params)

arr = np.random.rand(10, 10)
plt.imshow(arr)
plt.ylim(0, 10)
plt.xlim(0, 10)

plt.xticks(np.arange(0.0, 11.0, 1.0))
plt.yticks(np.arange(0.0, 11.0, 1.0))

plt.show()

这是生成的图像:

【问题讨论】:

  • 因为数组在 python 中索引为零,而您要求的数组大小为 10,所以 0-9?
  • pyhton 数组从 0 开始索引。因此,两个轴的值都在 0-9 之间,请注意,每个刻度也指向“像素”的中心。你可以修改你的 lims plt.xlim((-0.5,9.5))plt.ylim((-0.5,9.5))。最后,如果您确实需要数字介于 1 和 10 之间,您可以使用 xticks 和 yticks:plt.xticks(np.arange(10), np.arange(1,11)) plt.yticks(np.arange(10), np.arange(1,11)) 请注意,如果您希望刻度从像素的左下角开始,您可以使用第一个 arange刻度线(我认为一定是np.arange(-0.5,9.5,1),但我不确定)

标签: python numpy matplotlib visualization


【解决方案1】:

正如其他用户指出的那样,Python 数组从“0”开始索引。您可以欺骗刻度以显示您想要的值:

  1. 创建要绘制的数据

    import numpy as np
    
    from matplotlib import pyplot as plt
    import matplotlib.pylab as pylab
    params = {'legend.fontsize': 'medium',
              'figure.figsize': (15, 5),
             'axes.labelsize': 'x-large',
             'axes.titlesize':'x-large',
             'xtick.labelsize':'x-large',
             'ytick.labelsize':'x-large'}
    pylab.rcParams.update(params)
    
    arr = np.random.rand(10, 10)
    
    
    
  2. 然后你可以使用plt.xticks(tickPosition,tickValues) 和yticks 一样。请注意,每个数字都指向图像中每个值的中心,因此您还必须更改 lim 位置:

    plt.figure()
    plt.imshow(arr)
    plt.ylim(-0.5, 9.5) #to show no blank spaces
    plt.xlim(-0.5, 9.5) #to show no blank spaces
    
    plt.xticks(np.arange(0, 10),np.arange(1, 11)) #trick the ticks
    plt.yticks(np.arange(0, 10),np.arange(1, 11))

这会给你下一个数字

  1. 您还可以在开始时(左下角)设置值,只是稍微花点功夫:
    plt.xticks(np.arange(-0.5, 9.5),np.arange(1, 11))
    plt.yticks(np.arange(-0.5, 9.5),np.arange(1, 11))

这会给你这个结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2015-09-23
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多