Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Plotly Value error - Invalid property for colour

I have been experiencing errors while generating charts using Plotly and it seems to be affecting most of the charts I try producing on it. The error also seems to be a duplicate across all the failures. I am using Jupyter notebook (Anaconda 3, Python 3.6).

Code that fails to generate output is found below (but my data table and everything else is correct).

** I am unsure if there's some problem with the Plotly library (I'm using Plotly's latest that I installed using "Pip install Plotly")

import pandas as pd # package for high-performance, easy-to-use data 
structures and data analysis
import numpy as np # fundamental package for scientific computing with Python
import matplotlib
import matplotlib.pyplot as plt # for plotting
import seaborn as sns # for making plots with seaborn
color = sns.color_palette()
import plotly.offline as py
py.init_notebook_mode(connected=True)
from plotly.offline import init_notebook_mode, iplot
init_notebook_mode(connected=True)
import plotly.graph_objs as go
import plotly.offline as offline
offline.init_notebook_mode()
from plotly import tools
import plotly.tools as tls
import squarify

from mpl_toolkits.basemap import Basemap
from numpy import array
from matplotlib import cm

# import cufflinks and offline mode
import cufflinks as cf
cf.go_offline()

# from sklearn import preprocessing
# # Supress unnecessary warnings so that presentation looks clean
import warnings
warnings.filterwarnings("ignore")

# # Print all rows and columns
pd.set_option('display.max_columns', None)
# pd.set_option('display.max_rows', None)

*************************************************
temp = application_train["TARGET"].value_counts()
df = pd.DataFrame({'labels': temp.index,
               'values': temp.values
              })
df.iplot(kind='scatter',labels='labels',values='values', title='Loan 
Repayed or not')

ERROR LOG (Below)

ValueError                                Traceback (most recent call last)
<ipython-input-63-2c9a8a530884> in <module>()
  3                    'values': temp.values
  4                   })
----> 5 df.iplot(kind='scatter',labels='labels',values='values', title='Loan 
Repayed or not')

C:\ProgramData\Anaconda3\lib\site-packages\cufflinks\plotlytools.py in 
_iplot(self, data, layout, filename, sharing, kind, title, xTitle, yTitle, 
zTitle, theme, colors, colorscale, fill, width, dash, mode, symbol, size, 
barmode, sortbars, bargap, bargroupgap, bins, histnorm, histfunc, 
orientation, 
boxpoints, annotations, keys, bestfit, bestfit_colors, mean, mean_colors, 
categories, x, y, z, text, gridcolor, zerolinecolor, margin, labels, values, 
secondary_y, secondary_y_title, subplots, shape, error_x, error_y, 
error_type, 
locations, lon, lat, asFrame, asDates, asFigure, asImage, dimensions, asPlot, 
asUrl, online, **kwargs)
698                                                                 
bargap=bargap,bargroupgap=bargroupgap,
annotations=annotations,gridcolor=gridcolor 
,
699                                                            
dimensions=dimensions,
--> 700                                  
zerolinecolor=zerolinecolor,margin=margin,is3d='3d' in kind,**l_kwargs)
701 
702         if not data:

C:\ProgramData\Anaconda3\lib\site-packages\cufflinks\tools.py in 
getLayout(kind, 
theme, title, xTitle, yTitle, zTitle, barmode, bargap, bargroupgap, margin, 
dimensions, width, height, annotations, is3d, **kwargs)
197 
198         theme_data = getTheme(theme)
--> 199         layout=Layout(theme_data['layout'])
200         layout['xaxis1'].update({'title':xTitle})
201         layout['yaxis1'].update({'title':yTitle})

C:\ProgramData\Anaconda3\lib\site-packages\plotly\graph_objs\_layout.py in 
__init__(self, arg, angularaxis, annotations, autosize, bargap, bargroupgap, 
barmode, barnorm, boxgap, boxgroupgap, boxmode, calendar, colorway, 
datarevision, 
direction, dragmode, font, geo, grid, height, hiddenlabels, hiddenlabelssrc, 
hidesources, hoverdistance, hoverlabel, hovermode, images, legend, mapbox, 
margin, orientation, paper_bgcolor, plot_bgcolor, polar, radialaxis, scene, 
selectdirection, separators, shapes, showlegend, sliders, spikedistance, 
template, ternary, title, titlefont, updatemenus, violingap, violingroupgap, 
violinmode, width, xaxis, yaxis, **kwargs)

C:\ProgramData\Anaconda3\lib\site-packages\plotly\basedatatypes.py in 
__setattr__(self, prop, value)

C:\ProgramData\Anaconda3\lib\site-packages\plotly\basedatatypes.py in 
__setattr__(self, prop, value)

C:\ProgramData\Anaconda3\lib\site-packages\plotly\graph_objs\_layout.py in 
legend(self, val)

C:\ProgramData\Anaconda3\lib\site-packages\plotly\basedatatypes.py in 
__setitem__(self, prop, value)

C:\ProgramData\Anaconda3\lib\site-packages\plotly\basedatatypes.py in 
__setitem__(self, prop, value)

C:\ProgramData\Anaconda3\lib\site-packages\plotly\basedatatypes.py in 
_set_compound_prop(self, prop, val)

C:\ProgramData\Anaconda3\lib\site-packages\_plotly_utils\basevalidators.py in 
validate_coerce(self, v)

C:\ProgramData\Anaconda3\lib\site- 
packages\plotly\graph_objs\layout\_legend.py in 
__init__(self, arg, bgcolor, bordercolor, borderwidth, font, orientation, 
tracegroupgap, traceorder, x, xanchor, y, yanchor, **kwargs)

C:\ProgramData\Anaconda3\lib\site-packages\plotly\basedatatypes.py in 
__setattr__(self, prop, value)

C:\ProgramData\Anaconda3\lib\site- 
packages\plotly\graph_objs\layout\_legend.py in 
bgcolor(self, val)

C:\ProgramData\Anaconda3\lib\site-packages\plotly\basedatatypes.py in 
__setitem__(self, prop, value)

C:\ProgramData\Anaconda3\lib\site-packages\plotly\basedatatypes.py in 
_set_prop(self, prop, val)

C:\ProgramData\Anaconda3\lib\site-packages\_plotly_utils\basevalidators.py in 
validate_coerce(self, v, should_raise)

C:\ProgramData\Anaconda3\lib\site-packages\_plotly_utils\basevalidators.py in 
raise_invalid_val(self, v)

ValueError: 
Invalid value of type 'builtins.str' received for the 'bgcolor' property of 
layout.legend
    Received value: 'pearl02'

The 'bgcolor' property is a color and may be specified as:
  - A hex string (e.g. '#ff0000')
  - An rgb/rgba string (e.g. 'rgb(255,0,0)')
  - An hsl/hsla string (e.g. 'hsl(0,100%,50%)')
  - An hsv/hsva string (e.g. 'hsv(0,100%,100%)')
  - A named CSS color:
        aliceblue, antiquewhite, aqua, aquamarine, azure,
        beige, bisque, black, blanchedalmond, blue,
        blueviolet, brown, burlywood, cadetblue,
        chartreuse, chocolate, coral, cornflowerblue,
        cornsilk, crimson, cyan, darkblue, darkcyan,
        darkgoldenrod, darkgray, darkgrey, darkgreen,
        darkkhaki, darkmagenta, darkolivegreen, darkorange,
        darkorchid, darkred, darksalmon, darkseagreen,
        darkslateblue, darkslategray, darkslategrey,
        darkturquoise, darkviolet, deeppink, deepskyblue,
        dimgray, dimgrey, dodgerblue, firebrick,
        floralwhite, forestgreen, fuchsia, gainsboro,
        ghostwhite, gold, goldenrod, gray, grey, green,
        greenyellow, honeydew, hotpink, indianred, indigo,
        ivory, khaki, lavender, lavenderblush, lawngreen,
        lemonchiffon, lightblue, lightcoral, lightcyan,
        lightgoldenrodyellow, lightgray, lightgrey,
        lightgreen, lightpink, lightsalmon, lightseagreen,
        lightskyblue, lightslategray, lightslategrey,
        lightsteelblue, lightyellow, lime, limegreen,
        linen, magenta, maroon, mediumaquamarine,
        mediumblue, mediumorchid, mediumpurple,
        mediumseagreen, mediumslateblue, mediumspringgreen,
        mediumturquoise, mediumvioletred, midnightblue,
        mintcream, mistyrose, moccasin, navajowhite, navy,
        oldlace, olive, olivedrab, orange, orangered,
        orchid, palegoldenrod, palegreen, paleturquoise,
        palevioletred, papayawhip, peachpuff, peru, pink,
        plum, powderblue, purple, red, rosybrown,
        royalblue, saddlebrown, salmon, sandybrown,
        seagreen, seashell, sienna, silver, skyblue,
        slateblue, slategray, slategrey, snow, springgreen,
        steelblue, tan, teal, thistle, tomato, turquoise,
        violet, wheat, white, whitesmoke, yellow,
        yellowgreen
like image 818
Dinesh Avatar asked Aug 05 '18 03:08

Dinesh


2 Answers

Update:

After further looking into the issue, the problem is with the cufflinks internal files. Cufflinks is having compatibility issues with the plotly latest version, which is dicussed in this Github Issue, You could try either downgrading to `plotly 2.7' using the below commands. So that these errors can be eliminated.

pip uninstall plotly
pip install plotly==2.7.0

As you can see in the logs, please refer the below line, which tells us the actual problem.

--> 199 layout=Layout(theme_data['layout'])

The error thrown for that lines is.

ValueError: 
Invalid value of type 'builtins.str' received for the 'bgcolor' property of 
layout.legend
    Received value: 'pearl02'

The 'bgcolor' property is a color and may be specified as:
  - A hex string (e.g. '#ff0000')
  - An rgb/rgba string (e.g. 'rgb(255,0,0)')
  - An hsl/hsla string (e.g. 'hsl(0,100%,50%)')
  - An hsv/hsva string (e.g. 'hsv(0,100%,100%)')
  - A named CSS color:
        aliceblue, antiquewhite, aqua, aquamarine, azure...

So you need to change the layout object's bgcolor property to something other than pearl02, which seems to be the issue, You could change the layout object property as.

layout = {
    'bgcolor': '#ffffff'
}

Please use the below reference link to know about the different ways of setting color values.

  1. Web Colors
like image 161
Naren Murali Avatar answered Nov 17 '22 11:11

Naren Murali


As of June 2019 this will get you up and running. Install cufflinks 0.13.0 with...

conda install -c conda-forge cufflinks-py

then install/downgrade plotly to 2.7.0 with ...

conda install plotly=2.7.0

Cufflinks guys have been working on the fix for sometime, but it's yet to emerge. Big job apparently.

like image 1
blissweb Avatar answered Nov 17 '22 12:11

blissweb