2017-09-13 24 views
8

मैं गाइड यहाँ का पालन किया:अजगर ज्या आरेख (Plotly) इंटरएक्टिव टूल टिप्स

https://plot.ly/python/filled-chord-diagram/

और मैं इस का उत्पादन:

enter image description here

गाइड में, मैं ribbon_info कोड का पालन किया कनेक्टिंग रिबन में होवरइन्फो जोड़ने के लिए लेकिन कुछ भी नहीं दिखाता है। मैं केवल रिबन समाप्त होने के लिए दिखाने के लिए होवरइन्फो प्राप्त कर सकता हूं। क्या कोई देख सकता है कि मैं कहां गलत हो रहा हूं?

ribbon_info=[] 
for k in range(L): 

    sigma=idx_sort[k] 
    sigma_inv=invPerm(sigma) 
    for j in range(k, L): 
     if matrix[k][j]==0 and matrix[j][k]==0: continue 
     eta=idx_sort[j] 
     eta_inv=invPerm(eta) 
     l=ribbon_ends[k][sigma_inv[j]] 

     if j==k: 
      layout['shapes'].append(make_self_rel(l, 'rgb(175,175,175)' , 
            ideo_colors[k], radius=radii_sribb[k])) 
      z=0.9*np.exp(1j*(l[0]+l[1])/2) 
      #the text below will be displayed when hovering the mouse over the ribbon 
      text=labels[k]+' appears on'+ '{:d}'.format(matrix[k][k])+' of the same grants as '+ '', 
      ribbon_info.append(Scatter(x=z.real, 
             y=z.imag, 
             mode='markers', 
             marker=Marker(size=5, color=ideo_colors[k]), 
             text=text, 
             hoverinfo='text' 
             ) 
          ) 
     else: 
      r=ribbon_ends[j][eta_inv[k]] 
      zi=0.9*np.exp(1j*(l[0]+l[1])/2) 
      zf=0.9*np.exp(1j*(r[0]+r[1])/2) 
      #texti and textf are the strings that will be displayed when hovering the mouse 
      #over the two ribbon ends 
      texti=labels[k]+' appears on '+ '{:d}'.format(matrix[k][j])+' of the same grants as '+\ 
        labels[j]+ '', 

      textf=labels[j]+' appears on '+ '{:d}'.format(matrix[j][k])+' of the same grants as '+\ 
        labels[k]+ '', 
      ribbon_info.append(Scatter(x=zi.real, 
             y=zi.imag, 
             mode='markers', 
             marker=Marker(size=0.5, color=ribbon_color[k][j]), 
             text=texti, 
             hoverinfo='text' 
             ) 
          ), 
      ribbon_info.append(Scatter(x=zf.real, 
             y=zf.imag, 
             mode='markers', 
             marker=Marker(size=0.5, color=ribbon_color[k][j]), 
             text=textf, 
             hoverinfo='text' 
             ) 
          ) 
      r=(r[1], r[0])#IMPORTANT!!! Reverse these arc ends because otherwise you get 
          # a twisted ribbon 
      #append the ribbon shape 
      layout['shapes'].append(make_ribbon(l, r , 'rgb(255,175,175)', ribbon_color[k][j])) 

चर के लिए आउटपुट इस प्रकार हैं:

texti = (u'Sociology appears on 79 of the same grants as Tools, technologies & methods',) 

textf = (u'Tools, technologies & methods appears on 79 of the same grants as Sociology',) 

ribbon_info = [{'hoverinfo': 'text', 
    'marker': {'color': 'rgba(214, 248, 149, 0.65)', 'size': 0.5}, 
    'mode': 'markers', 
    'text': (u'Demography appears on 51 of the same grants as Social policy',), 
    'type': 'scatter', 
    'x': 0.89904409911342476, 
    'y': 0.04146936036799545}, 
{'hoverinfo': 'text', 
    'marker': {'color': 'rgba(214, 248, 149, 0.65)', 'size': 0.5}, 
    'mode': 'markers', 
    'text': (u'Social policy appears on 51 of the same grants as Demography',), 
    'type': 'scatter', 
    'x': -0.65713108202353809, 
    'y': -0.61496238993825791},..................**etc** 

sigma = array([ 0, 14, 12, 10, 9, 7, 8, 5, 4, 3, 2, 1, 6, 16, 13, 11, 15], dtype=int64) 

जो बनाता तार आरेख इस प्रकार है पिछले ब्लॉक के बाद कोड:

ideograms=[] 
for k in range(len(ideo_ends)): 
    z= make_ideogram_arc(1.1, ideo_ends[k]) 
    zi=make_ideogram_arc(1.0, ideo_ends[k]) 
    m=len(z) 
    n=len(zi) 
    ideograms.append(Scatter(x=z.real, 
          y=z.imag, 
          mode='lines', 
          line=Line(color=ideo_colors[k], shape='spline', width=0), 
          text=labels[k]+'<br>'+'{:d}'.format(row_sum[k]), 
          hoverinfo='text' 
          ) 
        ) 


    path='M ' 
    for s in range(m): 
     path+=str(z.real[s])+', '+str(z.imag[s])+' L ' 

    Zi=np.array(zi.tolist()[::-1]) 

    for s in range(m): 
     path+=str(Zi.real[s])+', '+str(Zi.imag[s])+' L ' 
    path+=str(z.real[0])+' ,'+str(z.imag[0]) 

    layout['shapes'].append(make_ideo_shape(path,'rgb(150,150,150)' , ideo_colors[k])) 

data = Data(ideograms+ribbon_info) 
fig=Figure(data=data, layout=layout) 

plotly.offline.iplot(fig, filename='chord-diagram-Fb') 

यह केवल hoverinfo है जो दिखाता है, बाहरी लेबल, न कि थोड़ा और अंदर:

enter image description here

मेरे प्रश्न की शुरुआत में लिंक से उदाहरण का उपयोग करना। उनके पास लेबल के दो सेट हैं। मेरे उदाहरण पर, 'इसाबेल के बराबर 32 सोफिया पर टिप्पणी की गई है ....' दिखा नहीं रहा है।

enter image description here

+0

दिए गए लिंक से: "ribbon_info जानकारी है कि जब रिबन समाप्त होता है पर माउस मँडरा प्रदर्शित किया जाता है की स्थापना dicts की एक सूची है।"पूरी तरह से केवल मार्करों के लिए होवरइन्फो की अनुमति देता है, कनेक्टिंग लाइनों के लिए नहीं। –

+0

तो जब ribbon_info टेक्स्टफ और टेक्स्टि को जोड़ता है, तो यह मेरे ग्राफ पर रिबन समाप्त होने के बाद क्या कर रहा है, केवल लेबल यानी 'अर्थशास्त्र' दिखाएं। लिंक के बहुत नीचे मेरे प्रश्न (https://plot.ly/python/filled-chord-diagram/) की शुरुआत में उनके चार्ट में रिबन के अंत और रिबन पर लेबल हैं?:/ – ScoutEU

+0

मेरा ब्राउज़र होवरइन्फो दिखाता है जब कर्सर होता है सर्कल के बाहरी हिस्से में लेकिन अंदर नहीं। इसके अलावा बाहरी सेगमेंट के करीब कुछ होवरइन्फो है लेकिन फिर भी, अंदर कुछ भी नहीं। रिबन से छुटकारा पाने के लिए अपने ब्राउज़र में 'class =" shapelayer "हटाएं और अंतर्निहित मार्कर देखें जो होवरइन्फो को ट्रिगर करता है। –

उत्तर

1

तार आरेख उत्पादन के लिए कोड दो साल पहले प्लॉटली द्वारा पोस्ट किया गया था। इस बीच प्लॉटली आकृतियों की परिभाषा में कुछ बदलाव किए गए थे। ऑफलाइन मोड आपको चाहिए में टूलटिप्स काम करने के लिए:

1) लाइन

layer='below' 
लौटे dicts में कार्यों द्वारा

सम्मिलित make_ideo_shape, make_ribbon, make_self_rel;

2) सेल उस सूची ribbon_info की परिभाषा में शामिल है, ribbon_info.append, एक्स, जिसमें तीन लाइनों और y सौंपा मूल्यों में से प्रत्येक पर बदलने में, उन मूल्यों से युक्त सूची में:

x=[z.real], 
y=[z.imag], 

x=[zi.real], 
y=[zi.imag], 

क्रमशः ,

x=[zf.real], 
y=[zf.imag], 

संबंधित नोटबुक https://plot.ly/python/filled-chord-diagram/ अब अपडेट किया गया है। इस बग उनका कहना है, यहाँ के लिए अजगर StackOverflow @PythonStack को धन्यवाद: https://twitter.com/PythonStack/status/914924595953721344

+0

यह वास्तव में सहायक है। मेरी पोस्ट पर प्रतिक्रिया देने के लिए बहुत बहुत धन्यवाद! विशेष रूप से इसकी उम्र दी गई – ScoutEU

1

मैं समाधान मिल गया। यह पता चला है कि ribbon_info ऑफ़लाइन चलाना पसंद नहीं करता है, जैसे ही मैंने इसे ऑनलाइन किया, यह दिखाया गया। अर्थात। यह साजिश में नहीं चलता है। ऑफलाइन। आपको इसे ऑनलाइन करना है

संपादित करें: सुनिश्चित नहीं है कि क्यों डाउनवॉट किया गया है, बहुत से लोग साजिशपूर्वक ऑफ़लाइन उपयोग करते हैं। उम्मीद है की यह मदद करेगा!

संबंधित मुद्दे