用python怎樣畫出如題所示的正余弦函數(shù)圖像? 如此編寫代碼,使其中兩個軸、圖例、刻度,大小,LaTex公式等要素與原圖一致,需要用到的代碼如下,沒有縮進(jìn):
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、湯旺ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的湯旺網(wǎng)站制作公司
#-*-codeing:utf-8;-*-
from matplotlib import pyplot as plt
import numpy as np
a=np.linspace(0,360,980)
b=np.sin(a/180*np.pi)
c=np.cos(a/180*np.pi)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim([0, 360])
ax.plot(a,b,label=r"$y=\sin(\theta)$")
ax.plot(a,c,label=r"$y=\cos(\theta)$")
ax.grid(True)
ax.set_ylabel(r"$y$")
ax.set_xlabel(r"$\theta$")
plt.xticks(np.arange(0,360+1,45))
plt.title("Sine Cosine Waves")
plt.legend()
plt.savefig("SinCosWaveDegFont.jpg")
plt.show()
代碼運(yùn)行show的窗口圖
代碼的截圖
代碼輸出的文件的圖
raw_input獲取的輸入是字符串,不能直接用np.array,需要用split進(jìn)行切分,然后強(qiáng)制轉(zhuǎn)化成數(shù)值類型,才能用plot函數(shù)
我把你的代碼稍微修改了一下,可能不太漂亮,不過能運(yùn)行了
x=[1,2,3]
a = raw_input('function')
a = a.split(' ')#依空格對字符串a(chǎn)進(jìn)行切分,如果是用逗號分隔,則改成a.split(',')
b = []
for i in range(len(a)):#把切分好的字符強(qiáng)制轉(zhuǎn)化成int類型,如果是小數(shù),將int改為float
b.append(int(a[i]))
plt.plot(x, b, label='x', color="green", linewidth=1)
不寫出y=f(x)這樣的表達(dá)式,由隱函數(shù)的等式直接繪制圖像,以x2+y2+xy=1的圖像為例,使用sympy間接調(diào)用matplotlib工具的代碼和該二次曲線圖像如下(注意python里的乘冪符號是**而不是^,還有,python的sympy工具箱的等式不是a==b,而是a-b或者Eq(a,b),這幾點(diǎn)和matlab的區(qū)別很大)
直接在命令提示行的里面運(yùn)行代碼的效果
from sympy import *;
x,y=symbols('x y');
plotting.plot_implicit(x**2+y**2+x*y-1);