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()不然会无法执行后续代码