मेरे पास निम्न कोड है जो वैक्टर शब्द को प्लॉट करता है:

import numpy as np
import matplotlib.pyplot as plt
la = np.linalg

words = ['I', 'like', 'enjoy', 'deep', 'learning', 'NLP', 'flying', '.']
X = np.array([ [0,2,1,0,0,0,0,0],
               [2,0,0,1,0,1,0,0],
               [1,0,0,0,0,0,1,0],
               [0,1,0,0,1,0,0,0],
               [0,0,0,1,0,0,0,1],
               [0,1,0,0,0,0,0,1],
               [0,0,1,0,0,0,0,1],
               [0,0,0,0,1,1,1,0]])
U, s, Vh = la.svd(X, full_matrices = False)
ax = plt.axes()
for i in range(len(words)): 
    plt.text(U[i,0],U[i,1],words[i])
    ax.arrow(0,0,U[i,0],U[i,1],head_width=0.1, head_length=0.1, fc='lightblue', ec='black')
plt.xlim(-.8,.2)
plt.ylim(-.8,.8)
plt.grid()

plt.title(' Simple SVD word vectors in Python',fontsize=10)
plt.show()
plt.close()

enter image description here

यह मूल से शुरू होने वाले तीरों को खींचता है। हालांकि, जब मैं अन्य बिंदुओं से साजिश करने की कोशिश करता हूं।

ax.arrow(-0.8,-0.8,U[i,0],U[i,1],head_width=0.1, head_length=0.1, fc='lightblue', ec='black')

enter image description here

यह तीर नहीं खींचता! कृपया मुद्दा क्या है?

धन्यवाद।

0
chikitin 6 अक्टूबर 2019, 01:30

1 उत्तर

सबसे बढ़िया उत्तर

matplotlib.axes.Axes.arrow का इस्तेमाल करना:

  • यह (x, y) से (x+dx, y+dy) तक एक तीर खींचता है
  • सेटिंग (-0.8, -0.8), निम्नलिखित प्राप्त करता है

enter image description here

  • तीर की दिशा बदलने के लिए, आपको गैर-शून्य मूल के लिए क्षतिपूर्ति करनी होगी
  • निम्नलिखित पंक्ति के साथ:
ax.arrow(-0.8, -0.8, (U[i,0] + 0.8), (U[i,1] + 0.8),head_width=0.1, head_length=0.1, fc='lightblue', ec='black')
  • आपको यह मिलेगा:

enter image description here

2
Trenton McKinney 6 अक्टूबर 2019, 02:18