1
我最近开始使用python脚本,但尝试绘制简单图形时遇到了问题。它应该产生一个莫尔圆,但我肯定错过了一些东西。 这是我现在的脚本:任何帮助将不胜感激!在Python上绘制圆形图
import math
import numpy as np
import matplotlib.pyplot as plt
%pylab inline
# max = maximum principal stress
# min = minimum principal stress
# x_norm = normal stress in x-direction
# y_norm = normal stress in y-direction
# t = shear stress
x_norm = -60
y_norm = 50
t = 50
R = math.sqrt(((x_norm - y_norm)/2)**2 + t**2)
print R
max = (x_norm + y_norm)/2 + R
min = (x_norm + y_norm)/2 - R
print max
print min
theta = 0.5 * math.atan((2*t)/(x_norm - y_norm))
print theta
aver = (x_norm + y_norm)/2
print aver
x = (min, max, x_norm, y_norm)
y = (math.sqrt(((x_norm - y_norm)/2)**2 + t**2))
plt.subplot(1,2,1)
plt.plot(x,y)
plt.show()
我试图改变它,但在最后得到一个错误。
import math
import numpy as np
import matplotlib.pyplot as plt
%pylab inline
# max = maximum principal stress
# min = minimum principal stress
# x_norm = normal stress in x-direction
# y_norm = normal stress in y-direction
# t = shear stress
x_norm = -60
y_norm = 50
t = 50
R = math.sqrt(((x_norm - y_norm)/2)**2 + t**2)
print R
max = (x_norm + y_norm)/2 + R
min = (x_norm + y_norm)/2 - R
print max
print min
theta = 0.5 * math.atan((2*t)/(x_norm - y_norm))
print theta
aver = (x_norm + y_norm)/2
print aver
def circle(x_norm, y_norm, t):
x = (min, max, x_norm, y_norm)
y = (math.sqrt(((x_norm - y_norm)/2)**2 + t**2))
plt.subplot(1,2,1)
plt.plot(x,y)
plt.show()
circle(rad,x,y,np.linspace(-100,100,500))
print("Done")
NameError Traceback (most recent call last)
<ipython-input-5-0b893be1e1e8> in <module>()
35 plt.show()
36
---> 37 circle(rad,x,y,np.linspace(-100,100,500))
38 print("Done")
NameError: name 'x' is not defined
那么,你是否收到错误,或者是什么? – Kevin 2015-03-31 12:22:15
这个问题不断出现: 'ValueError:x和y必须具有相同的第一维' - 它表示错误在'plt.plot(x,y)'部分。 – Chris 2015-04-03 10:07:47