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

Python-如何使色条方向水平?,python,matplotlib,orientation,colorbar,Python,Matplotlib,Orientation,Colorbar,所以我有一个带有底图的绘图,上面有一个彩色网格,还有一个设置为cbar的彩色条。我希望colorbar方向是水平的,而不是垂直的,但是当我在extend='max'之后的cbar=m.colorbar行中设置orientation='horizontal'时,我得到了以下错误:“colorbar()为关键字参数'orientation'获得了多个值” 有人在另一个问题上解释了为什么会发生这种情况,但我实在无法理解答案,也看不到如何解决它的解释。有人能帮忙吗?我尝试改用plt.colorbar,但

所以我有一个带有底图的绘图,上面有一个彩色网格,还有一个设置为cbar的彩色条。我希望colorbar方向是水平的,而不是垂直的,但是当我在extend='max'之后的cbar=m.colorbar行中设置orientation='horizontal'时,我得到了以下错误:“colorbar()为关键字参数'orientation'获得了多个值”

有人在另一个问题上解释了为什么会发生这种情况,但我实在无法理解答案,也看不到如何解决它的解释。有人能帮忙吗?我尝试改用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()

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

地图是这样的


您需要使用
location=“bottom”

我是从basemap文档中的示例中得到的


正如其他人在评论中所述

plt.colorbar(orientation='horizontal')

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

你可以发布错误的回溯,或者你提到的帖子的链接吗?如果你使用
fig.colorbar
而不是
m.colorbar
,会怎么样?添加了回溯,当我尝试plt.colorbar时,我意识到我用cbar设置的一些参数不起作用。例如,cbar=m.colorbar()行中的ticks=bounds由于任何原因都不起作用。下面是我提到的帖子-澄清-当我使用fig.colorbar()或plt.colorbar()代替cbar=m.colorbar()并删除size参数(这是不允许的)时,我得到了水平的colorbar,但我的ticks参数被忽略。我真的需要保留自定义的勾号标签。两件事:我不认为你链接到的答案是问题所在,
colorbar
的声明在回溯中看起来还可以。此外,您发布的代码与回溯中显示的代码不同,回溯中会出现
orientation='horizontal'
,而您发布的代码不在其中:)谢谢!我还使用了“pad”参数将其放置在x轴标签下方,或者等效地
plt.colorbar(orientation='horizontal')
plt.colorbar(orientation='horizontal')