【问题标题】:errorbars & colorbars python误差线和颜色条 python
【发布时间】:2016-01-17 03:00:21
【问题描述】:

我想绘制一个散点图,它有一个颜色条,并且数据有误差条。这是我的代码:

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(123)

x = np.linspace(0.1, 100, 10)
y = np.linspace(6, 18, 10)
yerr = np.random.random(10)
z = np.linspace(0, 10, 10)

plt.scatter(x, y, s = 20, c = z)
plt.colorbar()
plt.errorbar(x, y, yerr = yerr, fmt = '.')

剧情如下:

但是,误差线以蓝色绘制。我想根据颜色条绘制它们,我该怎么做?例如,如果一个点的值为10,则应在red 中绘制误差线。

编辑

按照下面建议的答案,我写道:

cmap = matplotlib.cm.get_cmap('jet')
norm = matplotlib.colors.Normalize(vmin=min(y), vmax=max(y))

plt.scatter(x, y, s = 20, c=z, cmap=cmap)
plt.colorbar()
plt.errorbar(x, y, yerr = yerr, fmt = '.', c=cmap(norm(y)))

但还是没用。有什么建议吗?

我仍然有兴趣得到这个问题的答案。有人吗?

【问题讨论】:

    标签: python matplotlib plot colorbar errorbar


    【解决方案1】:

    您可以使用颜色图为错误栏着色,但您可能希望标准化发送给它的值:

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib
    
    np.random.seed(123)
    
    x = np.linspace(0.1, 100, 10)
    y = np.linspace(6, 18, 10)
    yerr = np.random.random(10)
    z = np.linspace(0, 10, 10)
    
    cmap = matplotlib.cm.get_cmap('jet')
    norm = matplotlib.colors.Normalize(vmin=min(y), vmax=max(y))
    
    plt.scatter(x, y, s = 20, c=z, cmap=cmap)
    plt.colorbar()
    plt.errorbar(x, y, yerr = yerr, fmt = '.', c=cmap(norm(y)))
    

    【讨论】:

    • raise ValueError('to_rgba: Invalid rgba arg "%s"\n%s' % (str(arg), exc)) ValueError: to_rgba: Invalid rgba arg "[[ 0. 0. 0.5 1. ] [ 0. 0. 0.99910873 1. ] [ 0.30044276 1. 0.66729918 1. ] [ 0.66729918 1. 0.30044276 1. ] [ 1. 0.90123457 0. 1. ] [ 1. 0.48002905 0. 1. ] [ 0.99910873 0.07334786 0. 1. ] [ 0.5 0. 0. 1. ]]" only length-1 arrays can be converted to Python scalars
    • 嗯……你用的是什么版本的 Matplotlib?
    • 版本为1.1.1rc
    • 如果可能,您可以尝试至少升级到 1.3。否则,plt.errorbar 返回的第三项是误差线对象列表,您可以遍历此列表并手动设置颜色。
    • 我现在又遇到一个错误:ValueError: to_rgba: Invalid rgba arg "[[ ...]]" length of rgba sequence should be either 3 or 4
    猜你喜欢
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2018-01-25
    • 2018-10-24
    • 2023-03-14
    • 2023-03-29
    相关资源
    最近更新 更多