import matplotlib.pyplot as plt import numpy as np def plot_curves_and_function(curves, function, file_path): # 创建图表和轴 fig, ax = plt.subplots(figsize=(10, 8)) # 设置x轴和y轴的对数刻度 ax.set_xscale('log') ax.set_yscale('log') # 设置网格 ax.grid(True, which="both", ls="--", linewidth=0.5) # 生成函数曲线 I_values = np.logspace(1, 4, 100) # 生成从 10 到 10000 的等比数据点 t_values = function(I_values) # 把t_values中的负值变为not a number t_values = np.where(t_values > 0, t_values, np.nan) # 绘制曲线 ax.plot(I_values, t_values, label='Function Curve', color='black', linestyle='--') ax.annotate('Function Curve', xy=(I_values[-1], t_values[-1]), textcoords="offset points", xytext=(-20, 10), ha='center') for label, data in curves.items(): ax.plot(data['x'], data['y'], label=label, color=data['color']) ax.annotate(label, xy=(data['x'][-1], data['y'][-1]), textcoords="offset points", xytext=(10, -10), ha='center') # 设置标签和标题 ax.set_xlabel('Axis-X', fontsize=12) ax.set_ylabel('Axis-Y', fontsize=12) ax.set_title('Example of a logarithmic graph', fontsize=14) # 设置轴限 ax.set_xlim([5, 10000]) ax.set_ylim([0.01, 1000]) # 保存图表 plt.savefig(file_path) # plt.show() if __name__ == "__main__": curves = { 'Curve0': {'x': [10, 30, 100, 1000, 3000], 'y': [1000, 100, 10, 1, 0.1], 'color': 'blue'}, 'Curve1': {'x': [10, 30, 100, 1000, 3000], 'y': [1000, 300, 30, 3, 0.3], 'color': 'green'}, 'Curve2': {'x': [10, 30, 100, 1000, 3000], 'y': [1000, 200, 20, 2, 0.2], 'color': 'purple'}, 'Curve3': {'x': [15, 40, 150, 1500, 5000], 'y': [500, 50, 5, 0.5, 0.05], 'color': 'orange'}, 'Curve4': {'x': [10, 30, 100, 1000, 3000], 'y': [800, 80, 8, 0.8, 0.08], 'color': 'red'}, 'Curve5': {'x': [20, 60, 200, 2000, 6000], 'y': [1000, 150, 15, 1.5, 0.15], 'color': 'brown'} } Tp = 1 I_op = 100 # 定义函数表达式 def function_expression(I_values): epsilon = 1e-10 return 80 * Tp / (((I_values / I_op) ** 2 - 1) + epsilon) plot_curves_and_function(curves, function_expression, file_path="log_chart.png")