Zakk
August 28, 2018, 8:50am
1
Hello everyone, newbie here.
I asked a stupid question in Stackflow and got no answers so I hope I can get the answers here.
https://stackoverflow.com/questions/52047884/similar-to-seaborns-hue-function-in-plotly
I found most tutorials of plotly is about typing individual traces for each data which is time exhausting and not necessary. I know there must be a solution to simplify this problem.
Hi @Zakk ,
No, there’s nothing directly analogous to hue
in plotly.py. This is something you could accomplish in ~3 lines with a pandas groupby
though. If you’re interested in that approach please post some sample data and I can show you what that would look like.
-Jon
Zakk
August 28, 2018, 10:10am
3
Hi, thank you for your support. Here is my one drive link for this dataset.
https://1drv.ms/u/s!AqCVxdu-hfBSgakprttgWHDVQTtprw
Hi @Zakk ,
Here’s that pandas groupby
approach I was referring to:
for region, geo_region in geo.groupby('Geographical region'):
fig.add_scatter(x=geo_region.Year, y=geo_region.Number, name=region, mode='lines')
And here’s the complete code block:
import plotly.graph_objs as go
import pandas as pd
from plotly.offline import iplot, init_notebook_mode
init_notebook_mode()
geo = pd.read_csv('my_output')
fig = go.Figure()
for region, geo_region in geo.groupby('Geographical region'):
fig.add_scatter(x=geo_region.Year, y=geo_region.Number, name=region, mode='lines')
iplot(fig)
Note that in the live version the legend has a scroll bar, that’s why not all of the regions show up in this static image. If you need all of the regions to show up statically, then just increase the layout.height
property of the figure.
Hope that helps!
-Jon
Zakk
August 29, 2018, 10:08am
5
jmmease:
import plotly.graph_objs as go import pandas as pd from plotly.offline import iplot, init_notebook_mode init_notebook_mode() geo = pd.read_csv(‘my_output’) fig = go.Figure() for region, geo_region in geo.groupby(‘Geographical region’): fig.add_scatter(x=geo_region.Year, y=geo_region.Number, name=region, mode=‘lines’) iplot(fig)
Hi Jon,
Thank you so much for your reply but still, some error pop up:
Hi @Zakk , I forgot to ask what version of plotly.py you’re using. My answer above is for version 3 only. Here’s a version that’s compatible with both versions 2 and 3.
traces = []
for region, geo_region in geo.groupby('Geographical region'):
traces.append(go.Scatter(x=geo_region.Year, y=geo_region.Number, name=region, mode='lines'))
fig = go.Figure(data=traces)
-Jon
Zakk
August 29, 2018, 10:47am
7
Problem solved!! To me, the old version looks better. And I have to admit that I should understand more about the for loop. Thank you again, Jon.
1 Like
thoo
February 18, 2019, 5:55am
8
Hi @jmmease ,
Thanks for your solution. How can I use this for subplots? For instances, I have traces_1
, traces_2
.
traces = []
for region, geo_region in geo.groupby('Geographical region'):
traces.append(go.Scatter(x=geo_region.Year, y=geo_region.Number, name=region, mode='lines'))
fig = go.Figure(data=traces)
I am trying to add like
fig = tools.make_subplots(rows=1, cols=2)
fig.append_trace(traces_1, 1, 1)
fig.append_trace(traces_2, 1, 2)
but it is not working because traces_1
is a list of traces. Is there anyway to make it work? Thanks.
jmmease
February 18, 2019, 10:53am
9
Hi @thoo ,
I think you should be able to loop over your traces_1
and traces_2
lists.
fig = tools.make_subplots(rows=1, cols=2)
for trace in traces_1:
fig.append_trace(traces, 1, 1)
for trace in traces_2:
fig.append_trace(traces, 1, 2)
Or, you could specify the lists to add_traces
and pass the row/col indices as lists as well.
fig.add_traces(traces_1, rows=[1]*len(traces_1), cols=[1]*len(traces_1)
fig.add_traces(traces_2, rows=[1]*len(traces_2), cols=[2]*len(traces_2)
Hope that helps!
-Jon
thoo
February 18, 2019, 3:56pm
10
Hi @jmmease ,
It works!!! Thanks for your help.
1 Like
khsaleh
November 9, 2019, 7:53am
11
Would you please send the sample data used in this post, (it was removed from the one drive link provided) Thank you
khsaleh
November 9, 2019, 7:59am
12
Would you please send the sample data used in this post, (it was removed from the one drive link provided) Thank you
AIMPED
Split this topic
April 28, 2023, 10:07am
13
A post was split to a new topic: Help with a grouped bar chart