subplot x 次数取决于数组的长度

彼得·潘杜罗·约根森

我试图用箭头所示的力绘制梁的偏转图,但对于每个箭头,我都需要ax.annotate().

问题是,我的力量(阵列loadPositions)可以介于0和“无穷大”有所不同,它dooesn't看起来像最佳方法就是让xax.annotate

所以我的问题是:是否可以制作一个for循环或可以使箭头数量等于loadPosition数组长度的东西

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
plt.style.use('classic')
fig = plt.figure()

E = 200*10**9
I = 0.0001


beamLength = 5
loadPositions = np.array([1,5,2,4,2.5,3.5])
loadForces = np.array([-800000,300000,200000,-528584,255040,-256356])
beamSupport = 'cantilever'

n = 1000

nrOfEval = np.linspace(0, beamLength,n)

deflection = np.ones([len(nrOfEval),len(loadPositions)])

if beamSupport == 'both':

    for i in range(len(nrOfEval)):

        for j in range(len(loadPositions)):

            if nrOfEval[i] < loadPositions[j]:

                deflection[i,j] = loadForces[j]*(beamLength-loadPositions[j])*nrOfEval[i]/(6*E*I*beamLength)*(beamLength**2-nrOfEval[i]**2-(beamLength-loadPositions[j])**2)

            if nrOfEval[i] >= loadPositions[j]:

                deflection[i,j] = loadForces[j]*loadPositions[j]*(beamLength-nrOfEval[i])/(6*E*I*beamLength)*(beamLength**2-(beamLength-nrOfEval[i])**2-loadPositions[j]**2)

elif beamSupport == 'cantilever':

    for i in range(len(nrOfEval)):

        for j in range(len(loadPositions)):

            if nrOfEval[i] < loadPositions[j]:

                deflection[i,j] = loadForces[j]*nrOfEval[i]**2/(6*E*I)*(3*loadPositions[j]-nrOfEval[i])

            if nrOfEval[i] >= loadPositions[j]:

                deflection[i,j] = loadForces[j]*loadPositions[j]**2/(6*E*I)*(3*nrOfEval[i]-loadPositions[j])


else:
    deflection = 'wrong support input'


deflection = np.sum(deflection,axis=1)




maxDeflectionIndex = np.abs(deflection).argmax()
print ("The maximum is at position::", maxDeflectionIndex)

maxDeflectionValue = deflection[maxDeflectionIndex]
print(maxDeflectionValue)


scaleForces = max(abs(loadForces))



fig, ax = plt.subplots()
ax.plot(nrOfEval,deflection)
plt.xlabel('Length[m]')
plt.ylabel('Deflection[mm]')
ax.axis('equal')

print('her')

ax.annotate('Maximum deflection', xy=(maxDeflectionIndex/n*beamLength, maxDeflectionValue), xytext=(maxDeflectionIndex/n*beamLength-0.7, 1),
                   arrowprops=dict(arrowstyle="->",
                                   connectionstyle="angle3,angleA=0,angleB=-90"));

ax.annotate('F1', xy=(loadPositions[0], deflection[int(round(n/beamLength*loadPositions[0]))-1]), xytext=(loadPositions[0], loadForces[0]/scaleForces+deflection[int(round(n/beamLength*loadPositions[0]))-1]),
                   arrowprops=dict(facecolor='black', shrink=0))

ax.annotate('F2', xy=(loadPositions[1], deflection[int(round(n/beamLength*loadPositions[1]))-1]), xytext=(loadPositions[1], loadForces[1]/scaleForces+deflection[int(round(n/beamLength*loadPositions[1]))-1]),
                   arrowprops=dict(facecolor='black', shrink=0))

ax.annotate('F3', xy=(loadPositions[2], deflection[int(round(n/beamLength*loadPositions[2]))-1]), xytext=(loadPositions[2], loadForces[2]/scaleForces+deflection[int(round(n/beamLength*loadPositions[2]))-1]),
                   arrowprops=dict(facecolor='black', shrink=0))

ax.annotate('F4', xy=(loadPositions[3], deflection[int(round(n/beamLength*loadPositions[3]))-1]), xytext=(loadPositions[3], loadForces[3]/scaleForces+deflection[int(round(n/beamLength*loadPositions[3]))-1]),
                   arrowprops=dict(facecolor='black', shrink=0))

ax.annotate('F5', xy=(loadPositions[4], deflection[int(round(n/beamLength*loadPositions[4]))-1]), xytext=(loadPositions[4], loadForces[4]/scaleForces+deflection[int(round(n/beamLength*loadPositions[4]))-1]),
                   arrowprops=dict(facecolor='black', shrink=0))

ax.annotate('F6', xy=(loadPositions[5], deflection[int(round(n/beamLength*loadPositions[5]))-1]), xytext=(loadPositions[5], loadForces[5]/scaleForces+deflection[int(round(n/beamLength*loadPositions[5]))-1]),
                   arrowprops=dict(facecolor='black', shrink=0))

plt.show
乔纳

你应该回归基础。

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
plt.style.use('classic')
fig = plt.figure()

E = 200*10**9
I = 0.0001


beamLength = 5
loadPositions = np.array([1,5,2,4,2.5,3.5])
loadForces = np.array([-800000,300000,200000,-528584,255040,-256356])
beamSupport = 'cantilever'

n = 1000

nrOfEval = np.linspace(0, beamLength,n)

deflection = np.ones([len(nrOfEval),len(loadPositions)])

if beamSupport == 'both':

    for i in range(len(nrOfEval)):

        for j in range(len(loadPositions)):

            if nrOfEval[i] < loadPositions[j]:

                deflection[i,j] = loadForces[j]*(beamLength-loadPositions[j])*nrOfEval[i]/(6*E*I*beamLength)*(beamLength**2-nrOfEval[i]**2-(beamLength-loadPositions[j])**2)

            if nrOfEval[i] >= loadPositions[j]:

                deflection[i,j] = loadForces[j]*loadPositions[j]*(beamLength-nrOfEval[i])/(6*E*I*beamLength)*(beamLength**2-(beamLength-nrOfEval[i])**2-loadPositions[j]**2)

elif beamSupport == 'cantilever':

    for i in range(len(nrOfEval)):

        for j in range(len(loadPositions)):

            if nrOfEval[i] < loadPositions[j]:

                deflection[i,j] = loadForces[j]*nrOfEval[i]**2/(6*E*I)*(3*loadPositions[j]-nrOfEval[i])

            if nrOfEval[i] >= loadPositions[j]:

                deflection[i,j] = loadForces[j]*loadPositions[j]**2/(6*E*I)*(3*nrOfEval[i]-loadPositions[j])


else:
    deflection = 'wrong support input'


deflection = np.sum(deflection,axis=1)




maxDeflectionIndex = np.abs(deflection).argmax()
print ("The maximum is at position::", maxDeflectionIndex)

maxDeflectionValue = deflection[maxDeflectionIndex]
print(maxDeflectionValue)


scaleForces = max(abs(loadForces))



fig, ax = plt.subplots()
ax.plot(nrOfEval,deflection)
plt.xlabel('Length[m]')
plt.ylabel('Deflection[mm]')
ax.axis('equal')

print('her')

ax.annotate('Maximum deflection', xy=(maxDeflectionIndex/n*beamLength, maxDeflectionValue), xytext=(maxDeflectionIndex/n*beamLength-0.7, 1),
                   arrowprops=dict(arrowstyle="->",
                                   connectionstyle="angle3,angleA=0,angleB=-90"));

for i in range(len(loadPositions)):
    f_string = 'F' + str(i+1)
    print(f_string)
    ax.annotate(f_string, xy=(loadPositions[i], deflection[int(round(n/beamLength*loadPositions[i]))-1]), xytext=(loadPositions[i], loadForces[i]/scaleForces+deflection[int(round(n/beamLength*loadPositions[i]))-1]),
                   arrowprops=dict(facecolor='black', shrink=0))

plt.show()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

发送消息取决于数组的长度

来自分类Dev

URLDownloadToFile 失败,0x800c0008 (INET_E_DOWNLOAD_FAILURE) 取决于 URL 的长度

来自分类Dev

在matplotlib中使用.subplot时如何添加标题,x轴标签和y轴标签?

来自分类Dev

设置div的宽度取决于图像的x宽度

来自分类Dev

CppCheck警告:表达式取决于x = x | =(1 << 3)中的求值顺序

来自分类Dev

Power如果文件未创建,则自动发出警报,条件取决于数组的长度

来自分类Dev

如何将一维numpy数组拆分为块,每个块的长度取决于条件

来自分类Dev

Power如果文件未创建,则自动发出警报,条件取决于数组的长度

来自分类Dev

链接错误取决于for循环长度

来自分类Dev

将数组拆分为X个长度

来自分类Dev

Resizing a single subplot in matplotlib

来自分类Dev

打印一个数字,取决于有多少个X

来自分类Dev

OpenLayers 4.x 样式多边形取决于其上的功能数量..?

来自分类Dev

useEffect挂钩取决于对象/数组

来自分类Dev

javascript拆分数组取决于名称

来自分类Dev

Ruby:打印x次数

来自分类Dev

特征长度如何取决于SVM分类器中的预测

来自分类Dev

隐藏DIV内容取决于文本框值的长度

来自分类Dev

隐藏DIV内容取决于文本框值的长度

来自分类Dev

结构长度长短取决于字节顺序吗?

来自分类Dev

启用/禁用 UIButton 取决于 UITextField 中的文本长度

来自分类Dev

Displaying whole image by clicking on a subplot

来自分类Dev

ggplot2:geom_ribbon,其alpha取决于每个x沿y轴的数据密度

来自分类Dev

将div固定在y位置,但不固定在x位置,具体取决于其他div

来自分类Dev

带有值x的Python对分是长度为1的数组

来自分类Dev

检查(x:xs)的长度

来自分类Dev

如何正确取消嵌套和拼合其中包含数组的javascript对象数组(X倍的次数)

来自分类Dev

如何写出一个长度取决于用户条目长度的字符串?

来自分类Dev

Python遍历字典x的次数?

Related 相关文章

  1. 1

    发送消息取决于数组的长度

  2. 2

    URLDownloadToFile 失败,0x800c0008 (INET_E_DOWNLOAD_FAILURE) 取决于 URL 的长度

  3. 3

    在matplotlib中使用.subplot时如何添加标题,x轴标签和y轴标签?

  4. 4

    设置div的宽度取决于图像的x宽度

  5. 5

    CppCheck警告:表达式取决于x = x | =(1 << 3)中的求值顺序

  6. 6

    Power如果文件未创建,则自动发出警报,条件取决于数组的长度

  7. 7

    如何将一维numpy数组拆分为块,每个块的长度取决于条件

  8. 8

    Power如果文件未创建,则自动发出警报,条件取决于数组的长度

  9. 9

    链接错误取决于for循环长度

  10. 10

    将数组拆分为X个长度

  11. 11

    Resizing a single subplot in matplotlib

  12. 12

    打印一个数字,取决于有多少个X

  13. 13

    OpenLayers 4.x 样式多边形取决于其上的功能数量..?

  14. 14

    useEffect挂钩取决于对象/数组

  15. 15

    javascript拆分数组取决于名称

  16. 16

    Ruby:打印x次数

  17. 17

    特征长度如何取决于SVM分类器中的预测

  18. 18

    隐藏DIV内容取决于文本框值的长度

  19. 19

    隐藏DIV内容取决于文本框值的长度

  20. 20

    结构长度长短取决于字节顺序吗?

  21. 21

    启用/禁用 UIButton 取决于 UITextField 中的文本长度

  22. 22

    Displaying whole image by clicking on a subplot

  23. 23

    ggplot2:geom_ribbon,其alpha取决于每个x沿y轴的数据密度

  24. 24

    将div固定在y位置,但不固定在x位置,具体取决于其他div

  25. 25

    带有值x的Python对分是长度为1的数组

  26. 26

    检查(x:xs)的长度

  27. 27

    如何正确取消嵌套和拼合其中包含数组的javascript对象数组(X倍的次数)

  28. 28

    如何写出一个长度取决于用户条目长度的字符串?

  29. 29

    Python遍历字典x的次数?

热门标签

归档