【问题标题】:Matplotlib Quiver plot matching key label color with arrow colorMatplotlib Quiver 绘图匹配键标签颜色和箭头颜色
【发布时间】:2025-12-12 01:50:01
【问题描述】:

使用matplotlib,python3.6。我正在尝试为 quiver plot 创建一些 quiverkeys,但很难让标签颜色与某些箭头匹配。下面是显示问题的代码的简化版本。当我对 (1,1) 处的向量使用相同的颜色 (0.3, 0.1, 0.2, 1.0 ) 并作为 quiverkey 的“labelcolor”时,我看到了 2 种不同的颜色。

q=plt.quiver([1, 2,], [1, 1],
             [[49],[49]],
             [0],
             [[(0.6, 0.8, 0.5, 1.0 )],
             [(0.3, 0.1, 0.2, 1.0 )]],
             angles=[[45],[90]])
plt.quiverkey(q, .5, .5, 7, r'vector2', labelcolor=(0.3, 0.1, .2, 1),
              labelpos='S', coordinates = 'figure')

【问题讨论】:

    标签: python-3.x matplotlib


    【解决方案1】:

    假设您打算使用quivercolor 参数来设置实际颜色。

    import matplotlib.pyplot as plt
    
    q=plt.quiver([1, 2,], [1, 1], [5,0], [5,5],
                 color=[(0.6, 0.8, 0.5, 1.0 ), (0.3, 0.1, 0.2, 1.0 )])
    plt.quiverkey(q, .5, .5, 7, r'vector2', labelcolor=(0.3, 0.1, .2, 1),
                          labelpos='S', coordinates = 'figure')
    
    plt.show()
    

    否则,C 参数被解释为根据默认颜色映射映射到颜色的值。由于您只有两个箭头,因此仅考虑数组中提供给 C 参数的 8 个数字中的前两个值。但是颜色图规范化使用所有这些值,使其范围在 0.1 和 1.0 之间。来电

    q=plt.quiver([1, 2,], [1, 1], [5,0], [5,5],
                 [(0.6, 0.8, 0.5, 1.0 ), (0.3, 0.1, 0.2, 1.0 )])
    

    因此等价于

    q=plt.quiver([1, 2,], [1, 1], [5,0], [5,5],
                 [0.6, 0.8], norm=plt.Normalize(vmin=0.1, vmax=1))
    

    导致第一个箭头颜色为 viridis 颜色图中的值 0.6,在 0.1 和 1.0 之间标准化,第二个箭头颜色为该颜色图中的 0.8。

    如果我们添加plt.colorbar(q, orientation="horizontal"),这会变得很明显:

    【讨论】:

    • 谢谢。我明白你在说什么。我想我在颜色上使用了 C,因为它允许我传入一个二维颜色数组。我的情节在每个 X,Y 处有多个向量。而且每一个都有不同的颜色。我想要一个跨所有组的特定颜色矢量的键。我将其简化为每个原点一个向量,以使其更易于传达……但这个答案帮助我看到了规范化步骤和默认颜色图。需要更多地玩它。谢谢!
    最近更新 更多