gpt4 book ai didi

python - Matplotlib:轮廓上的颜色条没有条纹

转载 作者:太空狗 更新时间:2023-10-29 21:53:08 25 4
gpt4 key购买 nike

在 matplotlib 中,我想创建一个插入颜色条来显示等高线图的比例,但是当我使用 contour 创建等高线时,颜色条有白色条纹贯穿其中,而当我使用 contourf 时,颜色条具有适当的“平滑”外观:

Contour comparisons

如何从我的正常等高线图上的填充等高线中获得漂亮的平滑颜色条?我想我也可以使用填充轮廓,其中零级可以设置为白色。

这里是生成这个例子的代码:

from numpy import linspace, outer, exp
from matplotlib.pyplot import figure, gca, clf, subplots_adjust, subplot
from matplotlib.pyplot import contour, contourf, colorbar, xlim, ylim, title
from mpl_toolkits.axes_grid1.inset_locator import inset_axes

# Make some data to plot - 2D gaussians
x = linspace(0, 5, 100)
y = linspace(0, 5, 100)
g1 = exp(-((x-0.75)/0.2)**2)
g2 = exp(-((y-4.25)/0.1)**2)
g3 = exp(-((x-3.5)/0.15)**2)
g4 = exp(-((y-1.75)/0.05)**2)
z = outer(g1, g2) + outer(g3, g4)

figure(1, figsize=(13,6.5))
clf()

# Create a contour and a contourf
for ii in range(0, 2):
subplot(1, 2, ii+1)

if ii == 0:
ca = contour(x, y, z, 125)
title('Contour')
else:
ca = contourf(x, y, z, 125)
title('Filled Contour')

xlim(0, 5)
ylim(0, 5)

# Make the axis labels
yt = text(-0.35, 2.55, 'y (units)', rotation='vertical', size=14);
xt = text(2.45, -0.4, 'x (units)', rotation='horizontal', size=14)

# Add color bar
ains = inset_axes(gca(), width='5%', height='60%', loc=2)
colorbar(ca, cax=ains, orientation='vertical', ticks=[round(xx*10.0)/10.0 for xx in linspace(0, 1)])

if ii ==1:
ains.tick_params(axis='y', colors='#CCCCCC')

subplots_adjust(left=0.05, bottom=0.09, right=0.98, top=0.94, wspace=0.12, hspace=0.2)

show()

编辑:我现在意识到在较低的分辨率下,白色条纹行为很难与一些光透明度区分开来。这是一个只有 30 条等高线的示例,这使问题更加明显:

FewContours

编辑 2:虽然我仍然有兴趣弄清楚在一般情况下如何做到这一点(比如如果有负值),但在我的具体情况下,我已经确定我可以有效地通过简单地将填充轮廓的级别设置为从零级别开始,创建看起来像我想要的东西:

ca = contourf(x, y, z, levels=linspace(0.05, 1, 125))

这基本上看起来像我想要的:

KlugeContours

最佳答案

一个简单的 hack 是将颜色栏中的线条粗细设置为某个更高的值。例如。将颜色条对象存储为 cb 并将以下行添加到您的示例中

for line in cb.lines: 
line.set_linewidth(3)

给予 enter image description here

关于python - Matplotlib:轮廓上的颜色条没有条纹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com