2015-03-31 229 views
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 
+0

那么,你是否收到错误,或者是什么? – Kevin 2015-03-31 12:22:15

+0

这个问题不断出现: 'ValueError:x和y必须具有相同的第一维' - 它表示错误在'plt.plot(x,y)'部分。 – Chris 2015-04-03 10:07:47

回答

0

的问题是,你x具有尺寸4,y是维1.为了使用plt.plot你必须提供实际的点来绘制圆。

有一个更简单的方法来绘制圆圈,这里是一个关于它的线索:plot a circle with pyplot?它显示了如何使用pyplot绘制圆圈。