这种密度散点图可谓是高大上了,其实做法也不难,甚至可以做的更好看,这个图的配色一看就知道是R做的,我摒弃R,用python来一发!!!
缺乏数据的我自然就只会用np.random咯,废话不多,直接上干货。。。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde
import pylab
from sklearn import linear_model
x = np.random.normal(size=1000)
y = x * 3 np.random.normal(size=1000)
xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)
c=np.column_stack((x,y))
fig, ax = plt.subplots()
f1 = np.polyfit(x, y, 1)
p1 = np.poly1d(f1)
yvals = p1(x)
plot2 = plt.plot(x, yvals, 'r',label='polyfit values')
plt.text(-3,5,'r=0.9468')
#model=linear_model.LinearRegression()
#p=model.fit(c,y)
ax.scatter(x, y, c=z, s=100, edgecolor='')
plt.show()
最后的线性回归里,我还尝试用过sklearn的线性回归,不可谓不酸爽。。。
最后出图:
。。。。
其他一些莫名其妙的细节就不解释了。。。反正也是写给自己看的。。。。这次选择的配色还有线条,也是比较随意,不难展示出matplotlib的强大,我记得它自带的配色有100多种吧,另外plot类下的函数也有100多种,作图已经够用了,如果还是嫌不够,我也没办法咯