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