Python 更改默认等高线中负值的虚线样式-matplotlib

Python 更改默认等高线中负值的虚线样式-matplotlib,python,matplotlib,contour,Python,Matplotlib,Contour,我正在尝试使用matplotlib绘制等高线,数据中有负值,我希望它们为虚线(matplotlib默认情况下会这样做),但是,我希望(1)控制虚线样式(打开、关闭)和(2)仅更改负等高线的颜色。我在link中尝试了答案: 但这会将轮廓中的所有线条设置为我不想要的虚线。我需要单独破解负轮廓线样式 我的代码的一部分: from pylab import * import matplotlib import numpy as np matplotlib.rcParams['contour.negat

我正在尝试使用matplotlib绘制等高线,数据中有负值,我希望它们为虚线(matplotlib默认情况下会这样做),但是,我希望(1)控制虚线样式(打开、关闭)和(2)仅更改负等高线的颜色。我在link中尝试了答案:

但这会将轮廓中的所有线条设置为我不想要的虚线。我需要单独破解负轮廓线样式

我的代码的一部分:

from pylab import *
import matplotlib
import numpy as np

matplotlib.rcParams['contour.negative_linestyle']= 'dashed'

CS = ax1.contour(xi, yi, W_t, levels=levels, colors='k', linewidths=0.05)

for c in CS.collections:
    c.set_dashes([(0, (2.0, 2.0))]) 

您可以循环使用由
CS
对象创建的行集合,并对任何非实线(从
get_linetype
中,使用值
[(无,无)]
)进行设置。作为一个简单的例子

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab


#Dummy data
delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = 10.0 * (Z2 - Z1)


CS = plt.contour(X, Y, Z, 20, colors='k')

for line in CS.collections:
    if line.get_linestyle() == [(None, None)]:
        print("Solid Line")
    else:
        line.set_linestyle([(0, (12.0, 3.0))])
        line.set_color('red')

plt.show()