使用cufflinks的iplot绘制散点图时遇颜色格式错误求助
解决cufflinks iplot散点图的ValueError问题
问题重现
导入的库
import numpy as np import pandas as pd import matplotlib.pyplot as plt from chart_studio import plotly # import plotly.plotly as pl import plotly.graph_objs as go import plotly.offline as of import cufflinks as cf import datetime as dt %matplotlib inline
初始化代码
of.init_notebook_mode(connected = True) cf.go_offline()
报错的绘图代码
df.iplot(kind='scatter',xTitle='Projects', yTitle='Donations',title='Projects vs Donations', symbol='x',colorscale='paired',mode='markers')
错误信息
ValueError: scatter.line的'color'属性收到无效的str类型值'rgba(166, 206, 227, np.float64(1.0))'
解决方案
方法1:手动处理颜色刻度的数值类型
问题出在cufflinks生成的颜色值里包含了np.float64(1.0),而plotly无法识别这种格式,需要将其转换为Python原生的float类型:
import plotly.colors as pc # 获取paired定性色板的颜色值 paired_colors = pc.qualitative.Paired # 处理每个颜色字符串,替换np.float64(1.0)为1.0 processed_colors = [color.replace('np.float64(1.0)', '1.0') if isinstance(color, str) else color for color in paired_colors] # 使用处理后的颜色列表绘图 df.iplot(kind='scatter',xTitle='Projects', yTitle='Donations',title='Projects vs Donations', symbol='x',colors=processed_colors,mode='markers')
方法2:指定单一颜色替代colorscale
如果不需要多色散点图,可以直接指定单一颜色,绕开colorscale的格式问题:
df.iplot(kind='scatter',xTitle='Projects', yTitle='Donations',title='Projects vs Donations', symbol='x',color='#636EFA',mode='markers')
方法3:升级cufflinks到兼容版本
该错误多为cufflinks与plotly的版本兼容问题,尝试升级cufflinks到最新版:
pip install --upgrade cufflinks
内容的提问来源于stack exchange,提问作者Kritarth Jaiswal
相关产品推荐
相关产品推荐

