【问题标题】:Matplotlib: Multiple legends for contour plot for multiple contour variablesMatplotlib:多个等高线变量的等高线图的多个图例
【发布时间】:2013-05-09 16:33:54
【问题描述】:

我需要在同一页面上制作多个变量的多个等高线图。我可以用 MATLAB 做到这一点(参见下面的 MATLAB 代码)。我无法让 matplotlib 显示多个图例。任何帮助将不胜感激。

Python 代码:

import numpy as np
from matplotlib import cm as cm
from matplotlib import pyplot as plt

delta = 0.25
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = X*np.exp(-X**2-Y**2)
Z2 = Y*np.exp(-X**2-Y**2)

plt.figure()
CS = plt.contour(X, Y, Z1, colors='k')
plt.clabel(CS, inline=1, fontsize=10)
CS = plt.contour(X, Y, Z2, colors='r')
plt.clabel(CS, inline=1, fontsize=10)
plt.legend(['case 1', 'case 2'])

plt.show()

MATLAB 代码:

[X,Y] = meshgrid(-2:.2:2,-2:.2:3);
Z1 = X.*exp(-X.^2-Y.^2);
Z2 = Y.*exp(-X.^2-Y.^2);

[C,h] = contour(X,Y,Z1, 'color', 'k');
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2);
hold on

[C,h] = contour(X,Y,Z2, 'color', 'r');
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2);

fn = {'case 1', 'case 2'};

legend(fn,'Location','NorthWest');

【问题讨论】:

    标签: python matplotlib legend contour


    【解决方案1】:

    如果您从 Matlab 中显示您想要的输出,将会有所帮助。例如,您真的想要多个图例吗?或者您的意思是 1 个带有多个项目的图例?

    由于等高线图(可以)对于每个级别都有不同的样式,因此您希望如何在图例中绘制它并不明显。但是为了让您开始,您可以通过检查 CS.collections 数组来访问每一行。

    例如:

    delta = 0.25
    x = np.arange(-3.0, 3.0, delta)
    y = np.arange(-2.0, 2.0, delta)
    X, Y = np.meshgrid(x, y)
    Z1 = X*np.exp(-X**2-Y**2)
    Z2 = Y*np.exp(-X**2-Y**2)
    
    fig, ax = plt.subplots()
    
    CS1 = ax.contour(X, Y, Z1, colors='k')
    ax.clabel(CS1, inline=1, fontsize=10)
    
    CS2 = ax.contour(X, Y, Z2, colors='r')
    ax.clabel(CS2, inline=1, fontsize=10)
    
    lines = [ CS1.collections[0], CS1.collections[-1], CS2.collections[0], CS2.collections[-1]]
    labels = ['CS1_neg','CS1_pos','CS2_neg','CS2_pos']
    
    plt.legend(lines, labels)
    

    结果:

    也许像plt.legend(CS2.legend_elements()[0], CS2.legend_elements()[1]) 这样的东西对你也有用。

    【讨论】:

    猜你喜欢
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    相关资源
    最近更新 更多