【发布时间】:2018-08-18 11:54:51
【问题描述】:
作为学习 Matplotlib 和改进数学/编码的练习,我决定尝试绘制一个三角函数(x 平方加上 y 平方等于一)。
三角函数也称为“圆”函数,但我只生成了一半的圆。
#Attempt to plot equation x^2 + y^2 == 1
import numpy as np
import matplotlib.pyplot as plt
import math
x = np.linspace(-1, 1, 21) #generate np.array of X values -1 to 1 in 0.1 increments
x_sq = [i**2 for i in x]
y = [math.sqrt(1-(math.pow(i, 2))) for i in x] #calculate y for each value in x
y_sq = [i**2 for i in y]
#Print for debugging / sanity check
for i,j in zip(x_sq, y_sq):
print('x: {:1.4f} y: {:1.4f} x^2: {:1.4f} y^2: {:1.4f} x^2 + Y^2 = {:1.4f}'.format(math.sqrt(i), math.sqrt(j), i, j, i+j))
#Format how the chart displays
plt.figure(figsize=(6, 4))
plt.axhline(y=0, color='y')
plt.axvline(x=0, color='y')
plt.grid()
plt.plot(x, y, 'rx')
plt.show()
我想绘制完整的圆圈。我的代码只产生正的 y 值,我想绘制整个圆圈。
这是完整情节的外观。我使用 Wolfram Alpha 来生成它。
理想情况下,我不想要为我完成提升的解决方案,例如使用 matplotlib.pyplot.contour。作为一个学习练习,我想可以说“看到工作”。也就是说,理想情况下,我希望生成所有值并“手动”绘制它们。
我能想到的唯一方法是重新排列方程并生成一组带有计算的 x 值的负 y 值,然后分别绘制它们。我确信有更好的方法来实现结果,并且我确信 Stack Overflow 上的一位专家会知道这些选项是什么。
我们将不胜感激地接受任何帮助。 :-)
【问题讨论】:
标签: python-3.x matplotlib math trigonometry