Python-如何使颜色条方向水平?

Posted

技术标签:

【中文标题】Python-如何使颜色条方向水平?【英文标题】:Python- How to make colorbar orientation horizontal? 【发布时间】:2016-11-24 01:19:12 【问题描述】:

所以我有一个带有底图、顶部颜色网格和设置为 cbar 的颜色条的图。我希望颜色条方向是水平的而不是垂直的,但是当我在extend ='max'之后的cbar = m.colorbar行中设置orientation ='horizo​​ntal'时,我收到以下错误:“colorbar() got multiple values for关键字参数'方向'"

有人在另一个问题上解释了为什么会发生这种情况,但老实说,我无法理解答案或看到如何解决它的解释。有人可以帮忙吗?我尝试改用 plt.colorbar,但由于某种原因不接受我的刻度设置。

这就是我之前的情节......

#Set cmap properties
bounds = np.array([0.1,0.2,0.5,1,2,3,4,6,9,13,20,30])
norm = colors.LogNorm(vmin=0.1,vmax=30) #creates logarithmic scale

#Create basemap
fig = plt.figure(figsize=(15.,10.))
m = Basemap(projection='cyl',llcrnrlat=-90,urcrnrlat=90,llcrnrlon=0,urcrnrlon=360.,lon_0=180.,resolution='c')
m.drawcoastlines(linewidth=1)
m.drawcountries(linewidth=1)
m.drawparallels(np.arange(-90,90,30.),linewidth=0.3)
m.drawmeridians(np.arange(-180.,180.,90.),linewidth=0.3)   
meshlon,meshlat = np.meshgrid(lon,lat)
x,y = m(meshlon,meshlat)

#Plot variables
trend = m.pcolormesh(x,y,lintrends_36,cmap='jet', norm=norm, shading='gouraud')

#Set plot properties
plt.tight_layout()
#Colorbar
cbar=m.colorbar(trend, size='3%',ticks=bounds,extend="max") #THIS LINE
cbar.set_label(label='Linear Trend (mm/day/decade)',size=30)
cbar.set_ticklabels(bounds)
#Titles & labels
plt.suptitle('Linear Trends of Precipitation (CanESM2)',fontsize=40,y=0.962)
plt.title('a) 1979-2014',fontsize=40)
plt.ylabel('Latitude',fontsize=30)
plt.show()

尝试定向时(所有其他代码都相同)...

地图看起来像这样。

【问题讨论】:

您能否发布错误的回溯,以及您提到的帖子的链接? 如果您使用fig.colorbar 而不是m.colorbar 会怎样? 添加了回溯,当我尝试 plt.colorbar 时,我意识到我用 cbar 设置的一些参数不起作用。例如, cbar=m.colorbar() 行内的 ticks=bounds 出于任何原因都不起作用。这是我提到的帖子-***.com/questions/18950054/… 澄清 - 当我使用 fig.colorbar() 或 plt.colorbar() 而不是 cbar=m.colorbar() 并且我删除了 size 参数(这是不允许的)时,我得到了水平颜色条,但我的刻度参数被忽略。我真的需要保留自定义刻度标签。 两件事:我认为您链接到的答案不是问题,colorbar 的声明在回溯中看起来没问题。此外,您发布的代码不是回溯中显示的代码,其中orientation='horizontal' 出现在您发布的代码中:) 【参考方案1】:

你需要使用location="bottom"

cbar=m.colorbar(trend, size='3%',ticks=bounds,extend="max",location="bottom")

我是从底图文档中的 this 示例中获得的。

【讨论】:

谢谢!我还使用“pad”参数将其定位在我的 x 轴标签下方。 或等效plt.colorbar(orientation='horizontal')【参考方案2】:

正如其他人已经在 cmets 中声明的那样

plt.colorbar(orientation='horizontal')

是一种替代(更简单)的解决方案!

【讨论】:

以上是关于Python-如何使颜色条方向水平?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 WPF ListView 项目水平重复,如水平滚动条?

如何使水平滚动条在 DT::datatable 中可见

Plotly Python 热图颜色条方向

如何在情节中使颜色条的刻度值不均匀

CSS 如何添加水平滚动条

如何使水平线分隔标签和输入?