idear 发表于 2020-8-7 15:49:50

属性错误module 'matplotlib.pyplot' has no attribute 'hold'

本帖最后由 idear 于 2020-8-7 16:06 编辑

运行程序的时候出行错误:AttributeError: module 'matplotlib.pyplot' has no attribute 'hold'。应该怎么解决{:10_266:} ,感谢大佬们

sunrise085 发表于 2020-8-7 16:15:19

matplotlib.pyplot好像没有你所用的这个属性‘hold’吧

你的版本是?
代码是什么?

idear 发表于 2020-8-7 16:32:08

sunrise085 发表于 2020-8-7 16:15
matplotlib.pyplot好像没有你所用的这个属性‘hold’吧

你的版本是?


我用的版本是Python3.8

idear 发表于 2020-8-7 16:35:40

idear 发表于 2020-8-7 16:32
我用的版本是Python3.8

## Plotting the problem
      plt.figure(str(np.random.rand()))
      plt.hold(True)
      plt.grid(True)
      # Plot the circular arc center.
      plt.plot(slipArcSTR['center'], slipArcSTR['center'], 'kx')
      # Plot the slip circular arc.
      plt.plot(arcPointsCoordsArray[:,0], arcPointsCoordsArray[:,1], 'k-', \
            lw=0.3)
      # Plot the slices.
      for i in range(len(slicesSTRCell)):
            plotslice(slicesSTRCell)
      # Plot the material boundary and the slope geometry.
      plt.plot(boundPointsCordsArray[:,0], boundPointsCordsArray[:,1], 'k-')
      # Plot the terrain surface.
      plt.plot(surfaceChordsArray[:,0], surfaceChordsArray[:,1], 'k', lw=2)
      # Plot the water table.
      plt.plot(wtCoordsArray[:,0], wtCoordsArray[:,1], 'b-')
      # Plot the radius of the arc at both ends.
      radius1PlotArray = np.vstack((slipArcSTR['center'], pointAtToeVec))
      plt.plot(radius1PlotArray[:,0], radius1PlotArray[:,1], 'k--', lw=0.5)
      radius2PlotArray = np.vstack((slipArcSTR['center'], pointAtCrownVec))
      plt.plot(radius2PlotArray[:,0], radius2PlotArray[:,1], 'k--', lw=0.5)
      # Plot the factor of safety value in graphic.
      if methodString == 'Allm':
            fsText = ' $f_{\mathrm{s}\, \mathrm{(Fellenius)}}=+\
                format(selectedFs, '.3f')+'\n'+\
                ' $f_{\mathrm{s}\, \mathrm{(Bishop\, Simp.)}}=+\
                format(selectedFs, '.3f')
      else:
            if methodString == 'Bshp':
                fsText = ' $f_{\mathrm{s}\, \mathrm{(Bishop\, Simp.)}}=+\
                  str(format(selectedFs, '.3f'))
            else:
                fsText = ' $f_{\mathrm{s}\, \mathrm{(Fellenius)}}=+\
                  str(format(selectedFs, '.3f'))
      plt.text(0, surfaceChordsArray, fsText, fontsize = 11, \
            horizontalalignment='left', verticalalignment='bottom')
      ## Final plot details.
      plt.axis('equal')
      plt.xlabel('$x$ distance')
      plt.ylabel('$y$ distance')
      plt.title(projectName)
      plt.hold(False)
      plt.savefig(projectName+outputFormatImg, dpi=300)

idear 发表于 2020-8-7 16:36:38

sunrise085 发表于 2020-8-7 16:15
matplotlib.pyplot好像没有你所用的这个属性‘hold’吧

你的版本是?


源代码好像使用Python2.7写的

sunrise085 发表于 2020-8-7 16:52:26

idear 发表于 2020-8-7 16:36
源代码好像使用Python2.7写的

哦哦,新版本中好像弃用了这个hold属性
具体改成什么我还没弄清楚,
你试试 clear() 或者 clf()

idear 发表于 2020-8-7 17:00:12

sunrise085 发表于 2020-8-7 16:52
哦哦,新版本中好像弃用了这个hold属性
具体改成什么我还没弄清楚,
你试试 clear() 或者 clf()

好的好的,我去试试看,谢谢大佬

idear 发表于 2020-8-7 18:25:57

sunrise085 发表于 2020-8-7 16:52
哦哦,新版本中好像弃用了这个hold属性
具体改成什么我还没弄清楚,
你试试 clear() 或者 clf()

我刚才把plt.hold()这个属性给删除了,然后程序正常运行了,新版本中好像都是默认使用plt.hold(True)这个值,无需单独调用
页: [1]
查看完整版本: 属性错误module 'matplotlib.pyplot' has no attribute 'hold'