- 积分
- 743
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-12-18
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Python画图教程——绘制散点图 先看图片
绘制散点图:比较2组数据变化的相关性
叠加的颜色为发生频率,颜色越集中于y=x线,则说明2组数据相关性越好。
读取数据为excel的两列。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import gaussian_kde
from matplotlib import rcParams
#读取数据
filename_path='测试数据.xlsx' #读取了相邻两个站点的气温数据
df=pd.read_excel(filename_path)
x_x=df['Tair_f']
y_y=df['TEMP_L']
#计算密度(概率),点越集中,则出现概率越大, 则颜色越深
xy = np.vstack([x_x,y_y])
z = gaussian_kde(xy)(xy)*1000 #*1000:根据密度单位来设定,如果*1000,则频率单位为10^-3
idx = z.argsort()
x, y, z = x_x[idx], y_y[idx], z[idx]
######################################散点图绘图区####################################
#config = {"font.family":'Times New Roman',"font.size":12,"mathtext.fontset":'stix'}
#rcParams.update(config)
plt.rcParams['font.sans-serif']=['simsun'] #用来正常显示中文,无中文可省略
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号,无中文可省略
font_stick={'family':'Times New Roman','size':24,'color':'k'} #坐标轴刻度字体字号
clevs_pre=np.arange(0,30,5) #设置色带尺标注间隔
pre_clev=np.arange(-10,50,10) #设置刻度间隔
#######绘图########
fig=plt.figure(figsize=(10,8))
ax = fig.add_subplot(111)
sct=ax.scatter(x, y,s=20,c=z,cmap='Spectral_r',marker='.')
print('开始绘制色带尺')
cbar=plt.colorbar(sct,ticks=clevs_pre,shrink=0.9,orientation='vertical',extend='both',pad=0.015,aspect=30) #orientation='horizontal'
cbar.ax.tick_params(labelsize=18)
print('开始绘制坐标轴')
ax.set_xticks(pre_clev)
ax.set_yticks(pre_clev)
ax.set_xticklabels(pre_clev,fontdict=font_stick)
ax.set_yticklabels(pre_clev,fontdict=font_stick)
ax.set_xlim(-12,32)
ax.set_ylim(-12,32)
print('绘制y=x直线')
xxx=np.arange(-20,900)
ax.plot(xxx, xxx, color="k",linewidth=2.5)
print('添加拟合线')
poly = np.polyfit(x_x,y_y, 1) #多项式拟合
z=np.polyval(poly, x_x)
a="%.3f" % poly[0]
b="%.2f" % poly[1]
print('回归方程为:','y='+a+'x+'+b)
ax.plot(x_x, z, 'r',linewidth=2.5)
fig.show()
fig.savefig('散点图.png',format='png',dpi=300)
|
-
-
|