1.代码:
import numpy as np import matplotlib.pyplot as plt import pandas as pd # 读入数据 file = r'123.xlsx' sheet = 'Sheet3' # 标题名称 title = '订货量洛伦兹曲线' xlabel = '数量' ylabel = '总供货' # Define the data df = pd.read_excel("123.xlsx", sheet_name=sheet) var1 = df['数量'].values # 都为1即可 var2 = df['总订货'].values #------------------------------- # sort the data in ascending order var1_sorted = np.sort(var1) var2_sorted = np.sort(var2) # calculate the cumulative sum of the sorted data cumsum_var1 = np.cumsum(var1_sorted) cumsum_var2 = np.cumsum(var2_sorted) # normalize the cumulative sum by dividing by the total sum normalized_cumsum_var1 = cumsum_var1 / np.sum(var1_sorted) normalized_cumsum_var2 = cumsum_var2 / np.sum(var2_sorted) # create the perfect equality line perfect_equality_line = np.linspace(0, 1, len(var1_sorted)) #处理中文乱码 plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #------------------------------- # plot the Lorenz curve plt.plot(normalized_cumsum_var1, normalized_cumsum_var2, label='var1') plt.plot([0,1], [0,1], label='Perfect equality line', linestyle='--', color='gray') plt.xlabel('累计' + xlabel + '百分比') plt.ylabel('累计' + ylabel + '百分比') plt.title('洛伦兹曲线') plt.legend() plt.show()
修改文件名、表单名、var1、var2即可
2.效果: