饼图
折线图可以看清楚数据的走势涨跌以及升迁,柱状图可以看清楚高低长短以及大小,但是它们都无法确认数据的百分比分布情况,所以这个时候就需要饼图,我们先来看一看饼图的简单用法:
fig = plt.figure() # 获取画板 ax = fig.add_subplot(111) # 获取画纸 labels = ['娱乐', '育儿', '饮食', '房贷', '交通', '其它'] sizes = [2, 5, 12, 70, 2, 9] plt.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=False, startangle=150) plt.title("饼图示例-8月份家庭支出") plt.show()
在matplotlib包中,我们使用饼图的方法是pie,而且百分比也不用我们自己来计算,pie方法会自动帮我们计算数组的综合,然后在分别每个数占据的比例,上面的代码显示效果如下:
饼图的详细用法
同样上面都是一些最基本的用法,我们实际的项目中可能还需要饼图的其他各种详细的设置,所以,我们先来看看饼图详细用法的一些代码:
fig = plt.figure() # 获取画板 ax = fig.add_subplot(111) # 获取画纸 labels = ['娱乐', '育儿', '饮食', '房贷', '交通', '其它'] sizes = [2, 5, 12, 70, 2, 9] explode = (0,0,0,0.1,0,0) ''' x:指定绘图的数据; explode:指定饼图某些部分的突出显示,即呈现爆炸式; labels:为饼图添加标签说明,类似于图例说明; colors:指定饼图的填充色; autopct:自动添加百分比显示,可以采用格式化的方法显示; pctdistance:设置百分比标签与圆心的距离; shadow:是否添加饼图的阴影效果; labeldistance:设置各扇形标签(图例)与圆心的距离; startangle:设置饼图的初始摆放角度; radius:设置饼图的半径大小; counterclock:是否让饼图按逆时针顺序呈现; wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等; textprops:设置饼图中文本的属性,如字体大小、颜色等; center:指定饼图的中心点位置,默认为原点 frame:是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置; ''' plt.pie(sizes,explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=90) ''' legend画出右上角显示的颜色文字配对详情 loc:图例所有figure位置 bbox_to_anchor:指定图例在轴的位置 fontsize:文字大小 borderaxespad:轴与图例边框之间的距离 frameon:是否去掉图例边框,false代表是 edgecolor:设置图例边框颜色 facecolor:设置图例背景颜色,若无边框,参数无效 handletextpad:图例句柄和文本之间的间距 handlelength:图例句柄的长度 handleheight:图例句柄的高度 labelspacing:图例条目之间的垂直间距 borderpad:图例边框的内边距 framealpha:控制图例框架的 Alpha 透明度 shadow:控制是否在图例后面画一个阴影 ''' ax.legend(loc='best', bbox_to_anchor=(1.1, 1.05), fontsize=8, borderaxespad=0.3,labelspacing=2.0) plt.title("饼图示例-8月份家庭支出") plt.show()
上面都是饼图常用的参数,其中有些参数并不是饼图用的所以这里没有讲解,因为legend有很多参数,而且大部分还是散点图用的参数,我们将马上讲解散点图,我们看看上面代码实现的效果图:
散点图
以上三种图都是我们生活中常见的图,比如财务报表,理财开支,生活贷款以及科学计算都会用到上面三种图形,但是有一种图是科学计算中独用的,那就是散点图,生活中基本见不到这种图,但从事科学研究的大佬肯定经常用到,下面我们来看看它的简单用法:
fig = plt.figure() # 获取画板 ax = fig.add_subplot(111) # 获取画纸 N = 1000 x = np.random.randn(N) y = np.random.randn(N) plt.scatter(x, y) plt.show()
在matplotlib包中,散点图的方法是scatter,上面的代码我们使用numpy库随机生成了1000具有标准正态分布的数据,定位X,Y的坐标,然后显示出来,显示的效果如下图所示:
散点图的详细用法
当然这是散点图最基本的用法,下面我们来看看散点图的详细用法,这里我们不和上面一样笼统的代码注释讲解,我们将分别讲解散点图的方法参数,首先也就是我们创建散点图的方法scatter它的参数:
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:原点的大小,也需要是一个list数组的类型,设置每个点的大小 c:颜色,可以单独设置(单独设置传入list数组),可以整体设置 marker:`〜matplotlib.markers.MarkerStyle`,可选,默认值:'o' 请参阅`〜matplotlib.markers`以获取有关不同的更多信息 标记分散支持的样式。 `marker`可以是 该类的实例或特定文本的简写 标记。 cmap:`〜matplotlib.colors.Colormap`,可选,默认:无 一个`〜matplotlib.colors.Colormap`实例或注册名称。 `cmap`仅在`c`是浮点数组时使用。如果没有, 默认为rc`image.cmap`。 norm:`〜matplotlib.colors.Normalize`,可选,默认:无 `〜matplotlib.colors.Normalize`实例用于缩放 亮度数据为0,1。`norm`只有在`c`是一个数组时才被使用 彩车。如果`None',则使用默认值:func:`normalize`。 vmin,vmax:标量,可选,默认值:无 `vmin`和`vmax`与`norm`结合使用来标准化 亮度数据。如果其中任何一个都是`无',那么最小和最大的 使用颜色数组。请注意,如果你通过一个“规范”实例,你的 `vmin`和`vmax`的设置将被忽略。 alpha:透明度 linewidths:标量或array_like,可选,默认值:无 如果无,则默认为(lines.linewidth,)。 verts:(x,y)的序列,可选 如果`marker`为None,这些顶点将用于 构建标记。标记的中心位于 在(0,0)为标准化单位。整体标记重新调整 由``s``完成。 edgecolors :边框颜色
比如我下面这段代码设置了每个点的大小,颜色,边框,透明度,样式为右尖三角形。代码如下:
fig = plt.figure() # 获取画板 ax = fig.add_subplot(111) # 获取画纸 x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] s = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] color = ['r', 'y', 'k', 'g', 'm', 'r', 'y', 'k', 'g', 'm'] plt.scatter(x, y, color=color, marker='>', s=s, edgecolor='black', alpha=0.5) for x, y in zip(x, y): plt.annotate('(%s,%s)' % (x, y), xy=(x, y), xytext=(0, -10), textcoords='offset points', ha='center', va='top') plt.show()
可以看到我们设置的点其实都在一条直线上,而且我们也同样使用了annotate方法,标记点的坐标显示在图像上,前面的有些方法,在散点图中依旧可以用,包括legend方法,这段代码显示的效果如下:
对于matplotlib包常用的绘图操作来说,上面基本都讲解到了,其他的都是一些比较偏门的知识,感兴趣的可以查询文档更深入的了解,但学会了上面的绘图代码,基本上大多数情况下都能轻松应付自如,好了matplotlib库就讲解到这里,觉得有用的可以点个赞支持一下,谢谢。