参见英文答案 > Matplotlib: How to adjust linewidth in colorbar for contour plot? 2个
我正在尝试编辑在我的颜色栏中显示的线宽,与我在Matplotlib中绘制的轮廓的线宽分开.我想将轮廓线宽设置为0.5,但是当我这样做时,我无法在颜色条中看到颜色轮廓.如果我将轮廓线宽设置为1.5,我可以在颜色条中看到它们,但轮廓对我来说太厚了.
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import numpy as np
#get data
delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-3.0, 3.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)
#get contour levels
levels=[-1.5,-1.25,-1,-0.75,-0.5,-0.25,0,0.25,0.5,0.75,1,1.25,1.5]
fig = plt.figure()
ax = fig.add_subplot(111)
#plot contours and color bar
CS = plt.contour(X,Y,Z,levels, linestyles='solid', linewidths=0.5, extent=(-3,3,-3,3))
plt.clabel(CS, colors='black', inline=True, inline_spacing=0, fontsize=8)
CB = plt.colorbar(CS, aspect=35, shrink=0.5, pad=0.09, orientation='horizontal', extend='both')
CB.set_ticks(levels)
CB.set_label('(values)',size=8)
CB.ax.tick_params(labelsize=6)
#set plot limits
plt.xlim([-3,3])
plt.ylim([-3,3])
#set aspect ratios to be equal
plt.axes().set_aspect('equal')
#set ticks of plot
ax.xaxis.set_major_locator(plt.MultipleLocator(1.0))
ax.yaxis.set_major_locator(plt.MultipleLocator(1.0))
plt.xticks(fontsize=8)
plt.yticks(fontsize=8)
plt.show()
关于如何分别控制轮廓线宽和色条线宽的任何想法?
解决方法:
使用CS所需的线宽(即0.5).
然后添加以下行:
CB.lines[0].set_linewidth(10)
你会在彩条中得到粗线条.
这给出了与OP在注释中实现的方法相同的结果,但是您不需要获取轴子项并且发现哪个是您必须设置linewithds的对象.
标签:python,matplotlib,colorbar 来源: https://codeday.me/bug/20190703/1367492.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。