Matplotlib Colorbar缺少1个必需的位置参数:';可映射';
我想为下面的dataframe创建散点图:Matplotlib Colorbar缺少1个必需的位置参数:';可映射';,matplotlib,scatter-plot,python-3.8,colorbar,Matplotlib,Scatter Plot,Python 3.8,Colorbar,我想为下面的dataframe创建散点图: df_sample.head(10) duration distance speed 0 26.299999 3.569 8.1 1 6.000000 0.739 7.4 2 25.700001 2.203 5.1 3 34.400002 2.876 5.0 4 3.000000 0.656 13.1 5 29.299999 3.704 7.6 6 10.200
df_sample.head(10)
duration distance speed
0 26.299999 3.569 8.1
1 6.000000 0.739 7.4
2 25.700001 2.203 5.1
3 34.400002 2.876 5.0
4 3.000000 0.656 13.1
5 29.299999 3.704 7.6
6 10.200000 2.076 12.2
7 4.000000 0.774 11.6
8 9.200000 1.574 10.3
9 10.800000 0.782 4.3
几乎可以用下面的代码完成。我想根据速度(黄色:最慢&蓝色:最快)将颜色条添加到图形中,最终在最后一行的fig.colorbar(ax=ax)
处出错。请告知:什么是可映射的
with plt.style.context('seaborn-ticks'):
fig, ax = plt.subplots(figsize = (10, 6))
ax.set_title('Relationship between Distance & Duration', fontdict={'fontsize': 18, 'fontweight': 'bold'}, loc='left', pad=20)
ax.scatter(x=df_sample.duration.values, y=df_sample.distance.values, c=df_sample.speed.values, cmap=cm.YlGnBu)
# remove top & right spines
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
# equivalent to 'sns.despine(offset = 5)'
ax.spines['left'].set_position(('outward', 5))
ax.spines['left'].set_linewidth(1.2)
ax.spines['bottom'].set_position(('outward', 5))
ax.spines['bottom'].set_linewidth(1.2)
# set ticks & ticklabels
xloc = np.arange(0, 45, 5)
ax.set_xticks(xloc)
ax.set_xticklabels(labels=xloc, fontdict={'fontsize': 12})
ax.set_xlabel('Minute(s)', fontdict={'fontsize': 14, 'fontweight': 'bold'})
yloc = np.arange(6)
ylab = [f"{int(num)}" for num in yloc]
ax.set_yticks(yloc)
ax.set_yticklabels(labels=ylab, fontdict={'fontsize': 12})
ax.set_ylabel("Distance (KM)" , fontdict={'fontsize': 14, 'fontweight': 'bold'})
fig.colorbar(ax=ax);
您可以将散点图指定给变量,例如:
sp=ax.scatter(x=df_sample.duration.values, y=df_sample.distance.values, c=df_sample.speed.values, cmap=cm.YlGnBu)
然后将其作为一个标记传递到颜色栏:
fig.colorbar(sp)
谢谢,它起作用了。我可以问一些后续问题吗?如何将颜色栏定位在图表顶部并调整其大小?您有任何资源吗?根据:
来自mpl\u toolkits.axes\u grid1.axes\u divider import使\u axes\u可定位
。。。将标题向上移动一点:ax.set_title('距离和持续时间之间的关系',fontdict={'fontsize':18,'fontwweight':'bold'},loc='left',pad=20,y=1.05)
。。。您可以使用参数来获得所需的大小:divider=make_axes\u locatable(ax)
cax=divider.append_axes(“top”,size=“2%”,pad=“5%”)
fig.colorbar(sp,cax=cax,orientation=“horizontal”)
谢谢@YevKad。我很快就会弄到手的。