【问题标题】:plot an odd number of numpy arrays in subplots在子图中绘制奇数个 numpy 数组
【发布时间】:2016-10-27 12:49:04
【问题描述】:

我必须可视化初步处理结果,这些结果仅作为 numpy ndarrays 存在。 为此,我使用 matplotlib 中的 pyplot (plt) 和 imshow + subplots

fig, ((mb_arr, mk_arr),(k10_b, k10_l)) = plt.subplots(3, 2, figsize=(16, 12))
mb_arr.imshow(mb_2014_array, cmap='gray', interpolation='nearest')
mk_arr.imshow(mk_2014_array, cmap='gray', interpolation='nearest')
k10_b.imshow(k10_build_array, cmap='gray', interpolation='nearest')
k10_l.imshow(k10_lake_array, cmap='gray', interpolation='nearest')
k10_f.imshow(k10_forest_array, cmap='gray', interpolation='nearest');

但是,我遇到了五分之四的结果,因为我无法在子图的设置中打印第五个数组。下面是我目前正在使用的代码,这里的错误是:

--> fig, ((mb_arr, mk_arr),(k10_b, k10_l), (k10_f, )) = plt.subplots(3, 2, figsize=(16, 12))

ValueError: too many values to unpack

如何指定 3 x 2 网格中的最后一行仅包含一个元素?

【问题讨论】:

    标签: numpy matplotlib ipython


    【解决方案1】:

    我用http://www.python-course.eu/matplotlib_multiple_figures.php

    import matplotlib.pyplot as plt
    import numpy as np
    x = np.linspace(0, 1, 1000)
    plt.figure()
    for i in range(1, 5):
        plt.subplot(3,2,i)
        plt.plot(np.sin(x))
    plt.subplot(3,2,(5,6))
    plt.plot(np.sin(x))
    plt.show()
    

    以及imshowcmapinterpolation

    import matplotlib.pyplot as plt
    import numpy as np
    np.random.seed(2)
    x = np.random.randint(0, 255, [10, 20])
    fig = plt.figure()
    for i in range(1, 5):
        plt.subplot(3,2,i)
        plt.imshow(x, cmap='gray', interpolation='nearest')
    plt.subplot(3,2,(5,6))
    plt.imshow(x, cmap='gray', interpolation='nearest')
    plt.show()
    

    【讨论】:

    • 是的,我也看过课程和示例。使用subplot 我可以排列不同的数组。是否有机会使用subplots 方法解决?
    • 对不起,我意识到太晚了。您的解决方案肯定有效。你知道如何让它与subplots一起工作吗?
    猜你喜欢
    • 1970-01-01
    • 2021-05-10
    • 2015-10-14
    • 2012-09-20
    • 2017-01-22
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    相关资源
    最近更新 更多