Visualize-ML / Book3_Elements-of-Mathematics

Book_3_《数学要素》 | 鸢尾花书:从加减乘除到机器学习;上架;欢迎继续纠错,纠错多的同学还会有赠书!
6.05k stars 1.04k forks source link

Book3_Ch22_向量_PAGE14_配套代码报错 #116

Closed lang07123 closed 3 months ago

lang07123 commented 11 months ago

图片

(visualize) PS D:\visualize-ML> python D:\visualize-ML\3-数学要素\Book3_Ch22_Python_Codes\Bk3_Ch22_4.py
Traceback (most recent call last):
  File "D:\visualize-ML\3-数学要素\Book3_Ch22_Python_Codes\Bk3_Ch22_4.py", line 36, in <module>
    draw_vector(a, np.array([0,0,0])/255, 'a', a)
  File "D:\visualize-ML\3-数学要素\Book3_Ch22_Python_Codes\Bk3_Ch22_4.py", line 22, in draw_vector
    ax.text(vector[0], vector[1], vector[2], label, zdir,
  File "d:\miniconda3\envs\visualize\Lib\site-packages\mpl_toolkits\mplot3d\axes3d.py", line 1448, in text
    art3d.text_2d_to_3d(text, z, zdir)
  File "d:\miniconda3\envs\visualize\Lib\site-packages\mpl_toolkits\mplot3d\art3d.py", line 180, in text_2d_to_3d
    obj.set_3d_properties(z, zdir)
  File "d:\miniconda3\envs\visualize\Lib\site-packages\mpl_toolkits\mplot3d\art3d.py", line 145, in set_3d_properties
    self._dir_vec = get_dir_vector(zdir)
                    ^^^^^^^^^^^^^^^^^^^^
  File "d:\miniconda3\envs\visualize\Lib\site-packages\mpl_toolkits\mplot3d\art3d.py", line 62, in get_dir_vector
    if zdir == 'x':
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

应修改为: a.tolist() 或与下方代码一致, 并且 plt.show() 应该放在最后, 否则会引起图像异常

draw_vector(a, np.array([0,0,0])/255, 'a', a.tolist())
draw_vector(c, np.array([0,0,0]), 'c', c.tolist())

draw_vector(i, np.array([0,112,192])/255,  'i', (1, 0, 0))
draw_vector(j, np.array([255,0,0])/255,    'j', (0, 1, 0))
draw_vector(k, np.array([146,208,80])/255, 'k', (0, 0, 1))

ax.set_proj_type('ortho')

ax.set_xlim(0,5)
ax.set_ylim(0,5)
ax.set_zlim(0,5)
ax.spines['left'].set_position('zero')

plt.tight_layout()
ax.set_xlabel('$\it{x}$')
ax.set_ylabel('$\it{y}$')
ax.set_zlabel('$\it{z}$')

ax.view_init(azim=60, elev=20)
# ax.view_init(azim=30, elev=20)
ax.xaxis._axinfo["grid"].update({"linewidth":0.25, "linestyle" : ":"})
ax.yaxis._axinfo["grid"].update({"linewidth":0.25, "linestyle" : ":"})
ax.zaxis._axinfo["grid"].update({"linewidth":0.25, "linestyle" : ":"})

plt.show()
Visualize-ML commented 11 months ago

谢谢你,这个issue先不关闭。后面要统一修改更新代码。请继续批评指正。

Cheers, James

On Fri, Jul 28, 2023 at 6:05 AM lang07123 @.***> wrote:

[image: 图片] https://user-images.githubusercontent.com/7733095/256790170-b183b507-5d97-4ebf-9684-cd41bcdccf8e.png

(visualize) PS D:\visualize-ML> python D:\visualize-ML\3-数学要素\Book3_Ch22_Python_Codes\Bk3_Ch22_4.py Traceback (most recent call last): File "D:\visualize-ML\3-数学要素\Book3_Ch22_Python_Codes\Bk3_Ch22_4.py", line 36, in draw_vector(a, np.array([0,0,0])/255, 'a', a) File "D:\visualize-ML\3-数学要素\Book3_Ch22_Python_Codes\Bk3_Ch22_4.py", line 22, in draw_vector ax.text(vector[0], vector[1], vector[2], label, zdir, File "d:\miniconda3\envs\visualize\Lib\site-packages\mpl_toolkits\mplot3d\axes3d.py", line 1448, in text art3d.text_2d_to_3d(text, z, zdir) File "d:\miniconda3\envs\visualize\Lib\site-packages\mpl_toolkits\mplot3d\art3d.py", line 180, in text_2d_to_3d obj.set_3d_properties(z, zdir) File "d:\miniconda3\envs\visualize\Lib\site-packages\mpl_toolkits\mplot3d\art3d.py", line 145, in set_3d_properties self._dir_vec = get_dir_vector(zdir) ^^^^^^^^^^^^^^^^^^^^ File "d:\miniconda3\envs\visualize\Lib\site-packages\mpl_toolkits\mplot3d\art3d.py", line 62, in get_dir_vector if zdir == 'x': ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

应修改为: a.tolist() 并且 plt.show() 应该放在最后, 否则会引起图像异常

draw_vector(a, np.array([0,0,0])/255, 'a', a.tolist()) draw_vector(c, np.array([0,0,0]), 'c', c.tolist())

draw_vector(i, np.array([0,112,192])/255, 'i', (1, 0, 0)) draw_vector(j, np.array([255,0,0])/255, 'j', (0, 1, 0)) draw_vector(k, np.array([146,208,80])/255, 'k', (0, 0, 1))

ax.set_proj_type('ortho')

ax.set_xlim(0,5) ax.set_ylim(0,5) ax.set_zlim(0,5) ax.spines['left'].set_position('zero')

plt.tight_layout() ax.set_xlabel('$\it{x}$') ax.set_ylabel('$\it{y}$') ax.set_zlabel('$\it{z}$')

ax.view_init(azim=60, elev=20)

ax.view_init(azim=30, elev=20)

ax.xaxis._axinfo["grid"].update({"linewidth":0.25, "linestyle" : ":"}) ax.yaxis._axinfo["grid"].update({"linewidth":0.25, "linestyle" : ":"}) ax.zaxis._axinfo["grid"].update({"linewidth":0.25, "linestyle" : ":"})

plt.show()

— Reply to this email directly, view it on GitHub https://github.com/Visualize-ML/Book3_Elements-of-Mathematics/issues/116, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZHC6V4YZHNYKDMJM4KSMD3XSOFFLANCNFSM6AAAAAA23I7VQY . You are receiving this because you are subscribed to this thread.Message ID: @.***>