2015-03-31 232 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繪製圓圈。