matplotlib.pyplot.scatter的函数说明如下:
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
常用参数有:x,y组成了散点的坐标;s为散点的面积;c为散点的颜色(默认为蓝色'b');marker为散点的标记;alpha为散点的透明度(0与1之间的数,0为完全透明,1为完全不透明);linewidths为散点边缘的线宽;如果marker为None,则使用verts的值构建散点标记;edgecolors为散点边缘颜色。
其他参数如cmap为colormap;norm为数据亮度;vmin、vmax和norm配合使用用来归一化亮度数据
可以把气泡图是一种特殊的散点图,散点图展示两个维度的数据,气泡图还可用通过气泡的大小和颜色展示数据。
%python.ipython
import pandas as pd
import matplotlib.pyplot as plt
import pandas as pd
#第一组数据
d = {"time":pd.Series([2006,2007,2008,2009,2010]),
"number":pd.Series([10,200,120,150,300]),
"size":pd.Series([50,130,40,50,160]),
"classification":pd.Series([1,2,0,1,2]),
"judge":pd.Series([True,True,True,True,True])}
df=pd.DataFrame(d)
#第二组数据
d1 = {"time":pd.Series([2006,2007,2008,2009,2010]),
"number":pd.Series([20,30,140,190,35]),
"size":pd.Series([80,140,40,50,150]),
"classification":pd.Series([1,2,0,1,2]),
"judge":pd.Series([True,True,True,True,True])}
df1=pd.DataFrame(d1)
#先定义气泡大小,rank 函数将大小列进行大小分配,越大的值分配结果也越高
#n为倍数,用来调节气泡的大小
size=df['size'].rank()
n=60
plt.figure(figsize=(14, 8), dpi= 100, facecolor='w', edgecolor='k')
plt.gca().set(xlim=(0, 350), ylim=(0, 200), xlabel='number', ylabel='size')
plt.xticks(fontsize=22)
plt.yticks(fontsize=22)
plt.title("scatter picture", fontsize=22)
plt.scatter(df['number'],df['size'],color=[plt.cm.tab10(i) for i in df['classification']],s=size*n,alpha=0.6,marker='^',label="circle")
plt.scatter(df1['number'],df1['size'],color=[plt.cm.tab10(i) for i in df1['classification']],s=size*n,alpha=0.4,marker='o',label="triangle")
plt.grid(True)
plt.legend()
plt.savefig('/root/result.png')
plt.show()