【问题标题】:Discrete density plot in matplotlibmatplotlib 中的离散密度图
【发布时间】:2013-07-31 22:59:41
【问题描述】:

我有一个 2D numpy 数组,我想使用它创建一个离散密度图。从某种意义上说,在图上的每个点 (i,j) 上都应放置一个点,其颜色应对应于二维数组的第 (i,j) 个元素的值。我不想使用imshow,因为我不想进行任何插值,而且我还想控制要放置的点的大小。

【问题讨论】:

    标签: python matplotlib plot density-plot


    【解决方案1】:

    您始终可以为每个点显式执行此操作,但这会很慢。我认为最好逐行执行(保持说 y 固定)并使用 scatter 函数。

    import matplotlib.pylab as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    n = 100
    x = plt.linspace(0,5, n)
    y = plt.linspace(0,5, n)
    
    ax = plt.subplot(111)
    for i in range(n):
        y_fixed = y[i] * plt.ones(n)
        z = [(abs(plt.cos(x[i])), 0.0, 0.5) for i in range(n)]
        ax.scatter(x, y_fixed, c=z)
    
    plt.show()
    

    这个庄园的大小也可以使用s 参数进行调整。

    没有任何关于如何指定颜色的数据,我使用了RGB 值。您可能需要规范化,但是 c= 会接受任何东西并将其转换为颜色,但这可能与您不太相关。

    有关 scatter 的更多信息,请参阅演示 here

    【讨论】:

    • 我无法真正理解如何在我的情况下实现这一点,因为我有一个二维数组。你能告诉我如何用二维数组来做吗?
    • 您从二维数组中获取一个切片,对应于固定的y(或x)。并将其用作颜色参数,例如 c=array[i].
    【解决方案2】:

    你试过imshowinterpolation='nearest' 吗?这接近你想要的吗?

    import matplotlib.pyplot as plt
    import numpy as np
    
    data = np.arange(100).reshape(10, 10)
    fig, ax = plt.subplots()
    ax.imshow(data, interpolation='nearest')
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 2016-08-25
      相关资源
      最近更新 更多