Python:带有colorbar的Barplot
发布时间:2020-12-20 11:06:04 所属栏目:Python 来源:网络整理
导读:我正在尝试使用颜色条制作条形图,每个条形图的高度是一个变量(y),每个条形图应该具有取决于另一个变量(c)的颜色. 我得到的是这个(简单的例子): data_x = [0,1,2,3]data_hight = [60,60,80,100]data_color = [1000,500,1000,900]data_color = [x / max(data_
我正在尝试使用颜色条制作条形图,每个条形图的高度是一个变量(y),每个条形图应该具有取决于另一个变量(c)的颜色.
我得到的是这个(简单的例子): data_x = [0,1,2,3] data_hight = [60,60,80,100] data_color = [1000,500,1000,900] data_color = [x / max(data_color) for x in data_color] fig,ax = plt.subplots(figsize=(15,4)) my_cmap = plt.cm.get_cmap('GnBu') colors = my_cmap(data_color) rects = ax.bar(data_x,data_hight,color=colors) CS = plt.contourf([data_x,data_color],cmap=my_cmap) cbar = plt.colorbar(CS,cmap=my_cmap) cbar.set_label('Color',rotation=270,labelpad=25) plt.xticks(data_x) plt.ylabel("Y") plt.show() 主要问题是直方图颜色很好,但颜色条的比例不同.除此之外,我可以在y = 0处看到蓝线,它不应该在那里. 任何帮助都是预先确定的. 解决方法
您正在条形图内创建一个contourf图.这是没有意义的.
相反,您需要创建一个没有任何可视化表示的mappable来提供给colorbar.这将是一个ScalarMappable. import matplotlib.pyplot as plt from matplotlib.cm import ScalarMappable data_x = [0,100] data_color = [1000.,500.,1000.,900.] data_color = [x / max(data_color) for x in data_color] fig,color=colors) sm = ScalarMappable(cmap=my_cmap,norm=plt.Normalize(0,max(data_color))) sm.set_array([]) cbar = plt.colorbar(sm) cbar.set_label('Color',labelpad=25) plt.xticks(data_x) plt.ylabel("Y") plt.show() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |