运行Flask时出现ValueError:不支持单字符颜色字符串作颜色序列如何解决?
问题原因
- 该报错和Flask本身无关,来自绘图库
matplotlib3.7+版本的规则变更:新版本不再支持直接传入单字符拼接的字符串作为颜色序列,要求必须传入显式列表格式的色值参数 - 你代码中
my_colors = 'rgbkymc'是字符串类型,直接传给plt.barh的color参数就会触发该错误 - 另外你代码中
plt.savefig的bbox_inches="tight"是HTML转义后的错误写法,实际运行也会报错
解决方案
方法1:直接将色值字符串转为列表
仅需要修改my_colors的定义行即可,代码修改后如下:
cat_order = df2.groupby('Category').agg({'App' : 'count'}).rename({'Category':'Total'}, axis=1).sort_values(by='App', ascending=False).head() X = cat_order.index Y = cat_order.App # 将字符串转成列表符合matplotlib的参数要求 my_colors = list('rgbkymc') fig = plt.figure(figsize=(8,3),dpi=300) fig.add_subplot() plt.barh(X,Y, color=my_colors) # 修正转义字符的错误,换回正常双引号 plt.savefig('cat_order.png',bbox_inches="tight")
方法2:自定义显式颜色列表
如果需要自定义颜色,也可以直接写色值列表,支持颜色名、十六进制色值、RGB色值等格式:
my_colors = ['#FF5733', '#33FF57', '#3357FF', '#F333FF', '#FF33A6']
内容的提问来源于stack exchange,提问作者Ilham Himawan
相关产品推荐
相关产品推荐

