import matplotlib.pyplot as plt
import numpy as np
theta=np.linspace(0.0,np.pi*2,1000)
sintheta=np.sin(theta)
costheta=np.cos(theta)
a=5
y=a * sintheta*(1-sintheta)
x=a * costheta*(1-sintheta)
plt.plot(x,y,c='r')
plt.show()
ps
将一个普通方程改写为参数方程真的能减少一些坐标轴反转的操作
2.绘制带有网格的散点图
#导入必要的模块
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
#产生测试数据
x = np.array(range(41))
y = x
colors = list(mcolors.TABLEAU_COLORS.keys())
plt.figure(figsize=[10, 10])
plt.xticks(x),plt.yticks(y)
plt.grid(linestyle='-',linewidth = 1, color = mcolors.TABLEAU_COLORS[colors[7]]) # linewidth并不是网格宽度而是网格线的粗细
f=open('test.txt','r')
door_size=int(f.readline())
n=int(f.readline())
line=f.readline()
f_i=0
f_j=0
door_x=0
door_y=0
if_door=0
#设置标题
##ax1.set_title('Scatter Plot')
while line :
f_j=0
for i in line:
if i == '1':
plt.scatter(f_i+0.5,f_j+0.5,c = 'r',marker = '.')
f_j+=1
elif i == '2':
plt.scatter(f_i+0.25,f_j+0.75,c = 'r',marker = '.')
plt.scatter(f_i+0.75,f_j+0.25,c = 'r',marker = '.')
f_j+=1
elif i == '-':
door_x=f_i
door_y=f_j
break
elif i== '0':
f_j+=1
f_i+=1
line=f.readline()
for i in range(0,n+1):
plt.scatter(0,i,c = 'black',linewidths=3,marker = 's')
for i in range(0,n+1):
plt.scatter(i,0,c = 'black',linewidths=3,marker = 's')
for i in range(0,n+1):
plt.scatter(n,i,c = 'black',linewidths=3,marker = 's')
for i in range(0,n+1):
plt.scatter(i,n,c = 'black',linewidths=3,marker = 's')
for i in range(door_x+1,door_x+door_size+1):
plt.scatter(i,door_y,c = 'white',linewidths=3,marker = 's')
plt.show()