import matplotlib.pyplot as plt
x_temp = ['这里放入纵坐标数据'] # 涉及科研数据,此处不放出完整数据,用来存放横坐标数据
y_temp1 = ['此次数据的分子部分'] # 纵坐标的分子数据
y_temp2 = ['此次数据的分母部分'] # 纵坐标的分母数据
y_temp=[] # 空列表 用来存放纵坐标数据
for num in range(0,19):
# 计算并添加纵坐标数据进空列表
y_num = float(y_temp1[num])/float(y_temp2[num])
y_temp.append(y_num)
print(y_temp)
# 由于数据存在补点,需要重新排序,所以需要先绑定数据对应关系,然后进行排序
# 按排序前的顺序制作成字典,用来绑定x列表和y列表数值间的对应关系,避免后面排序后数据混乱
data = dict(zip(y_temp, x_temp))
print(data)
# 通过冒泡排序对y列表进行排序
n = len(y_temp)
# 遍历所有数组元素
for i in range(n):
# Last i elements are already in place
for j in range(0, n - i - 1):
if y_temp[j] > y_temp[j + 1]:
y_temp[j], y_temp[j + 1] = y_temp[j + 1], y_temp[j]
print("排序后的数组:")
print(y_temp)
#按排序后的y顺序调整x顺序
y = y_temp
x = []
for x_num in range(0,19):
print(y[x_num])
x_temp_num = data.get(y[x_num])
x.append(x_temp_num)
print(x)
# 添加的语句如下面虚线分隔起来的部分所示:
# ---------------------------------------------
ax = plt.gca() # 得到图像的Axes对象
plt.title("幅频特性曲线") # 标题名称
plt.rcParams['font.sans-serif'] = ['SimHei'] # 避免中文乱码
plt.rcParams['axes.unicode_minus'] = False # 避免符号乱码
plt.plot(y, x, color='blue', linestyle='solid', marker='o')
plt.xlabel("周期比", horizontalalignment='left', verticalalignment='top') # x轴名称
plt.ylabel("θ/度", horizontalalignment='left', verticalalignment='bottom') # y 轴名称
# ---------------------------------------------
# 如果有正负轴,则需要重新设定轴线,可以参考以下代码进行设定轴线
# ax.spines['right'].set_color('none') # 将图像右边的轴设为透明
# ax.spines['top'].set_color('none') # 将图像上面的轴设为透明
# ax.xaxis.set_ticks_position('bottom') # 将x轴刻度设在下面的坐标轴上
# ax.yaxis.set_ticks_position('left') # 将y轴刻度设在左边的坐标轴上
# ax.spines['bottom'].set_position(('data', 0)) # 将两个坐标轴的位置设在数据点原点
# ax.spines['left'].set_position(('data', 0))
# 画出图像
plt.savefig('幅频特性曲线.png', dpi=200) # 直接保存图像,dpi=200是为了避免图像失真
plt.show() # 如果后续还有代码,需要使用plt.close()不然会无法执行后续代码