import pandas as pd from pylab import mpl from scipy import optimize import numpy as np import matplotlib.pyplot as plt def f_1(x, A, B): return A*x B def draw_cure(file): data1=pd.read_excel(file) data1=pd.DataFrame(data1) hz=list(data病人密度(人/10万人) rk=list(data人口密度(人/平方公里) hz_gy=[] rk_gy=[] for i in hz: hz_gy.append((i-min(hz))/(max(hz)-min(hz))) for i in rk: rk_gy.append((i-min(rk))/(max(rk)-min(rk))) n=玄武区,秦淮区,建邺区,鼓楼区,浦口区,栖霞区,雨花台区,江宁区,六合区 锡山区,惠山区,梁溪区,新吴区,江阴市 鼓楼区,云龙区,贾汪区丰县,沛县 天宁区,钟楼区,新北区,武进区,金坛区 虎丘区,吴中区,相城区,姑苏区,常熟市,张家港市,太仓市, 崇川区,港闸区、通州区、如东县、启东市、如皋市、海安市、 '连云区','海州区','赣榆区','东海县','灌云县','灌南县', 淮安区,淮阴区,清江浦区,洪泽区,涟水县 亭湖区,盐都区,大丰区,响水县,滨海县,阜宁县 广陵区,汉江区,江都区,宝应县,仪征市,高邮市, 京口区,润州区,丹阳市,扬中市 高港区,姜堰区,兴化市,靖江市 宿城区,泗洪县 mpl.rcParams['font.sans-serif'] = ['FangSong'] plt.figure(figsize=(16,8),dpi=98) p1 = plt.subplot(121) p2 = plt.subplot(122) p1.scatter(rk_gy,hz_gy,c='r') p2.scatter(rk_gy,hz_gy,c='r') p1.axis([0.0,1.01,0.0,1.01]) p1.set_ylabel("患者密度(人/10万人)",fontsize=13) p1.set_xlabel("人口密度(人/平方公里)",fontsize=13) p1.set_title("人口密度-患者密度相关性",fontsize=13) for i,txt in enumerate(n): p1.annotate(txt,(rk_gy[i],hz_gy[i])) A1, B1 = optimize.curve_fit(f_1, rk_gy, hz_gy)[0] x1 = np.arange(0, 1, 0.01) y1 = A1*x1 B1 p1.plot(x1, y1, "blue",label=一次拟合直线 x2 = np.arange(0, 1, 0.01) y2 = x2 p1.plot(x2, y2,'g--',label='y=x') p1.legend(loc='upper left',fontsize=13) # # plot the box tx0 = 0;tx1 = 0.1;ty0 = 0;ty1 = 0.2 sx = [tx0,tx1,tx1,tx0,tx0] sy = [ty0,ty0,ty1,ty1,ty0] p1.plot(sx,sy,"purple") p2.axis([0,0.1,0,0.2]) p2.set_ylabel("患者密度(人/10万人)",fontsize=13) p2.set_xlabel("人口密度(人/平方公里)",fontsize=13) p2.set_title("人口密度-患者密度相关性",fontsize=13) for i,txt in enumerate(n): p2.annotate(txt,(rk_gy[i],hz_gy[i])) p2.plot(x1, y1, "blue",label=一次拟合直线 p2.plot(x2, y2,'g--',label='y=x') p2.legend(loc='upper left',fontsize=13) plt.show() if __name__ == '__main__': draw_cure("F:\医学大数据课题\修改论文终稿\scientific report\返修\市县相关分析 _2231.xls")
