在Python上绘制圆形图

时间:2015-03-31 11:29:36

标签: python graph plot scripting

我最近开始使用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

1 个答案:

答案 0 :(得分:0)

问题在于x的尺寸为4,y为尺寸1.为了使用 plt.plot ,您必须提供实际的点来绘制圆圈。

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