2017-06-28 3 views
0

Ich kann die Beschriftungen nicht ändern, wenn ich ein ternäres Plot mit plotly in Python schwebe. DieseÄndern der Beschriftung bei Hover in ternären Plots Plotly python

der Code, der die Handlung schafft:

import plotly 
import plotly.graph_objs as go 

# sample data 
f1 = [31.83, 39.93, 29.15, 42.36, 432.88, 43.05, 31.32, 0.57, 424.19, 320.1, 48.16, 123.67, 176.99, 342.0, 174.84, 271.27, 115.15] 
f2 = [110.8, 124.34, 132.07, 82.14, 213.04, 91.47, 133.31, 211.26, 224.33, 201.46, 59.5, 154.9, 163.59, 231.25, 123.57, 119.6, 186.35] 
f3 = [59.92, 87.86, 114.43, 57.99, 364.05, 1910.65, 1196.43, 931.8, 134.58, 233.37, 80.92, 194.15, 121.22, 166.59, 142.02, 340.56, 357.92] 

# trace creation 
trace1 = go.Scatterternary(
a = f1, 
b = f2, 
c = f3, 
mode='markers', 
) 
# plot plotting 
data = [trace1] 
fig = go.Figure(data=data) 
plotly.offline.plot(fig) 

es funktioniert gut. Wenn Sie die Daten jedoch schweben lassen, wird bei jedem Punkt das Label mit A: 0.54, B: 0.28, C: 0.17 beim Schweben gezeichnet.

Ich möchte dieses Etikett mit den tatsächlichen Werten (also nicht Prozent) ersetzen, wie: SO4: 164, Ca: 122, Na: 158.

Hinzufügen der text Option in der Spur, wie:

trace1 = go.Scatterternary(
a = f1, 
b = f2, 
c = f3, 
mode='markers', 
text=f1 
) 

bekomme ich den Wert für SO4 (so für eine Achse) erhalten, aber ich kann die Werte von b und c-Achse nicht hinzuzufügen.

Antwort

0

Dank this answer in the plotly forum.

Die Lösung ist eine Liste mit der gleichen Länge wie die Daten und Schleifen auf dem Index der Listen zu erstellen und die Kombination von text und hoverinfo=text Optionen in den Plot-Einstellungen verwenden:

text = ['SO4: '+'{:d}'.format(f1[k])+'<br>Ca: '+'{:d}'.format(f2[k])+'<br>Na: '+'{:d}'.format(f3[k]) for k in range(len(f1)] 

trace1 = go.Scatterternary(
a = f1, 
b = f2, 
c = f3, 
mode='markers', 
hoverinfo='text' 
text=text, 
) 

Hope this kann Hilfe auch jemand anderen