数据分析学习笔记—matplotlib折线图、条形图、直方图、饼状图基础绘制

一、Matplotlib概念和基本属性设置思维导图

在这里插入图片描述

二、折线图基础绘制及代码中相关参数解析

1、代码
from matplotlib import pyplot as plt
from matplotlib import font_manager
#设置x,y的值
x1=[-7,-4,-1,0,3,5,7,9,12,15,16,17]
y1=[12,13,15,17,23,11,13,26,99,10,12,36]
y2=[-12,73,-15,7,13,33,12,36,9,11,1,7]

#设置实例fig的大小和像素
fig = plt.figure(figsize=(30,10),dpi=300)

#导入windows的字体
font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyh.ttc',size=20)

#设置图的图例名字,折线的颜色,透明度,折线宽度,和折点的形状,折点的大小,折点的颜色,折点边缘的颜色,这里形状为*
plt.plot(x1,y1,label='图例1',color='orange',alpha=1,linewidth=3,marker='*',markersize=30,markerfacecolor='red',markeredgecolor='purple',markeredgewidth=5)
plt.plot(x1,y2,label='图例2',color='green',alpha=1,linewidth=3,marker='o',markersize=20,markerfacecolor='purple',markeredgecolor='red',markeredgewidth=5)

#设置图例的显示,显示为中文
plt.legend(prop=font,loc='upper right')

#设置图的网格,x隐藏,只显示竖直方向的网格线,以及网格线的样式,透明度和宽度
plt.grid(axis='x',color='red',alpha=0.5,linestyle='--',linewidth=1)


#设置x轴左边最大是-2,隐藏右边和上方的坐标轴,将左边和下方坐标轴0点重合形成新坐标轴
plt.xlim(left=-2)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_color('blue')
ax.spines['left'].set_color('blue')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

#设置x轴和y轴的刻度,显示中文,旋转30度
x=[-8,-6,-4,-2,0,2,4,6,8,10,12,14,16,18]
y=[0,10,20,30,40,50,60,70,80,90,100]
x_ticks_label = ["{}度".format(i) for i in x]
plt.xticks(x,x_ticks_label,fontproperties=font)
y_ticks_label = ["{}个".format(i) for i in y]
plt.yticks(y,y_ticks_label,fontproperties=font)

#设置x轴标签
plt.xlabel('温度',fontproperties=font)

#显示图例1对应折线折点的x和y的值,坐标注释的位置,字体线型和字体颜色和外框显示
for a,b in zip(x1,y1):
    plt.annotate('(%s,%s)'%(a,b),xy=(a,b),xytext=(10,10),textcoords='offset points',weight='heavy',color='#0926f1', bbox=dict(boxstyle='round,pad=0.5', fc='yellow', ec='k', lw=1, alpha=0.5))
#显示图例2对应折线折点的坐标,垂直对齐方式,水平对齐方式,字体大小,字体背景颜色,旋转角度,透明度
for a,b in zip(x1,y2):
    plt.text(a,b,(a,b),ha='left',va='top',fontsize=12,color='#0926f1',backgroundcolor='yellow',rotation=3,alpha=0.5)
#保存生成的图片
plt.savefig('D:/tools/Git/data-analysis-learning-route/数据分析基础/python/python基础语法/示例.png')
plt.show()
2、结果展示

在这里插入图片描述

3、Matplotlib图组件—官方

在这里插入图片描述

4、jupyter Notebook获取函数及其参数使用方法

举例:获取abs函数和参数用法,输入后,点击运行,或者在光标位置按Shift+Tab

abs?

在这里插入图片描述

在这里插入图片描述

5、代码函数和类常用参数详解
(1)plt.figure() 参数
plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
  • num:数字或者字符串,数字作为id,如果id预先不存在,则新增figure,按顺序递增编号,如果id存在,则返回对该图像的引用。字符串则是窗口标题
  • figsize:英寸单位,(宽,高)
  • dpi:设置图像分辨率
  • facecolor:背景颜色
  • edgecolor:边框颜色
  • frameon:是否显示边框
(2)font_manager.FontProperties()参数
font_manager.FontProperties(family=None,style=None,variant=None,weight=None,stretch=None,size=None,fname=None)
  • family:字体类别,默认值为sans-serif (无衬线体),其他的有serif(衬线体),cursive(手写体), fantasy(符号字体), monospace(等宽字体)
  • style:字体的样式,默认为normal(正常),其他的有italic(斜体),oblique(文本倾斜)
  • variant:默认为normal ,其他的为small-caps(小型大写字体)
  • weight:字体的粗细,采用0-1000的数值表示,也可用另一种表示,默认为normal,其他的为ultralight(超细),light(细),regular(常规),bookmedium(中等),roman(罗马字体),semibolddemibolddemiboldheavyextra bold(超粗),black(黑色)
  • stretch: 字体的拉伸,采用0-1000的数值表示,也可用另一种表示,ultra-condensedextra-condensedcondensedsemi-condensednormalsemi-expandedexpandedextra-expandedultra-expanded
  • size:字体大小,默认为10,使用数字,或者xx-smallx-smallsmallmediumlargex-largexx-large
  • fname:通过字体文件的绝对路径指定特定的字体,一般是windows自带字体
(3)plt.plot()参数
plt.plot(*args, scalex=True, scaley=True, data=None, **kwargs)

对于使用的人,比如我这个菜鸟,可能这个就太抽象了,即便后面他补充说明了几种参数,但我的使用主要还是集中在2D的一些我个人目前常用的绘图的属性设置,写到这里我学会了用word做表格更清晰明了

  • x,y:x是可选的,如果没写,则默认情况下是按照y的长度range,输入

  • alpha:`:透明度

  • animated:布尔值类型,动态绘图的一个参数

  • color:颜色,可以缩写成c

  • label:图例标签

  • linestyle:线的样式,可以缩写为ls,有如下几种:
    在这里插入图片描述

  • linewidth:线的宽度,浮点型,可以缩写为lw

  • marker:折点的样式,有如下几种:
    在这里插入图片描述

  • markeredgecolor:折点边缘颜色,可以缩写为mec:

  • markeredgewidth:折点边缘大小,可以缩写为mew

  • markerfacecolor:折点颜色,可以缩写为mfc

  • markersize:折点大小,可以缩写为ms

(4)plt.legend()参数
plt.legend(*args, **kwargs)
  • labels:图例的内容,列表
  • loc:设置图例的位置,有以下几种:
    在这里插入图片描述
  • bbox_to_anchor:指定图例在轴/图形中的位置
  • ncol:图例列的数量,默认为1
  • prop:有值时为获取的字体,无值时一般使用的是matplotli在这里插入代码片b.rc函数的获取字体的功能
  • fontsize:字体大小,为数值时以磅为单位,一般没有指定prop的情况下,使用xx-small,x-small,small,medium,large,x-large,xx-large
  • shadow:是否在图例后面添加阴影
  • framealpha:设置图例框架透明度
  • title:图例标题,默认无
  • title_fontsize:图例标题字体大小
  • borderpad:图例边框的内边距,浮点型
  • labelspacing:图例条目之间的垂直间距
  • handlelength:图例句柄的长度
  • handletextpad :图例句柄和文本之间的差距
  • borderaxespad :轴与图例边框的距离
(5)plt.grid()参数
plt.grid(b=None, which='major', axis='both', **kwargs)

三、条形图基础绘制

1、简单条形图
(1)导入模块
from matplotlib import pyplot as plt
import matplotlib
(2)设置条形图的属性
#设置条形图每条的刻度,条形图高度 
a = ['我','在','画','图','片','呢']
b = ['18.11','29.23','4.91','31.54','9.17','6.91']
matplotlib.rc("font",family='SimHei',size=18)
plt.figure(figsize=(20,8),dpi=80)
#设置坐标轴刻度、条形图高度、条形图宽度,颜色,
rects = plt.bar(range(len(a)),[float(i) for i in b],width=0.3,color=['r','g','b','y','k','m'])
# 在条形图上加水平居中的标注
for rect in rects:  #循环对每个条形图操作
    height = rect.get_height()  #获取每个条形图的高度
    plt.text(rect.get_x() + rect.get_width() / 2, height+0.3, str(height),ha="center")   #获取条形图在坐标轴上左边的坐标和宽度的一半的值,相加,加高度0.3,即在条形图中点上方0.3处
(3)绘制条形图
plt.xticks(range(len(a)),a)
plt.yticks(range(0,41,5),range(0,41,5))
plt.show()
(4)结果展示

在这里插入图片描述

2、横向条形图
from matplotlib import pyplot as plt
import matplotlib
a = ['你','看','我','画','的','图']
b = ['18.11','29.23','4.91','31.54','9.17','6.91']
matplotlib.rc("font",family='SimHei',size=18)
plt.figure(figsize=(20,8),dpi=80)
rects = plt.barh(range(len(a)),[float(i) for i in b],height=0.5,color=['r','g','b','y','k','m']) 
plt.yticks(range(len(a)),a)
for rect in rects:
    width = rect.get_width()
    plt.text(width,rect.get_y()+0.5/2,str(width),va='center')
plt.show()

在这里插入图片描述

3、并列条形图
import matplotlib.pyplot as plt
import numpy as np
index = np.arange(4)
BJ = [50,55,53,60]
Sh = [44,66,55,41]
plt.bar(index,BJ,width=0.3,color='r')
plt.bar(index+0.3,Sh,width=0.3,color='b')
plt.xticks(index+0.3/2,index)
plt.show()

在这里插入图片描述

4、堆叠条形图
import matplotlib.pyplot as plt
import numpy as np
index = np.arange(4)
BJ = [50,55,53,60]
Sh = [44,66,55,41]
plt.bar(index,BJ,width=0.3,color='r')
plt.bar(index,Sh,bottom=BJ,width=0.3,color='g')  #以BJ为底部
plt.show()

在这里插入图片描述

四、直方图基础绘制

1、直方图概念

用连续的数据,一系列高度不等的纵向条纹或者线段展示一组或者多组的数据分布情况,横轴表示数据范围,纵轴表示分布情况

2、直方图绘制
(1)导入模块
import matplotlib
from matplotlib import pyplot as plt
(2)准备数据
time = [131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114,
        119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115,  99, 
        136, 126, 134,  95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117,  86,  95, 144, 
        105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123,  86, 101,  99, 136,123,
        117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116,
        108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125,
        138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140,  83, 110, 102,123,
        107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 
        106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144,  83, 123, 
        111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 
        141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 
        130, 141, 117, 106, 114, 121, 114, 133, 137,  92,121, 112, 146,  97, 137, 105,  98, 
        117, 112,  81,  97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111,
        101, 110,105, 129, 137, 112, 120, 113, 133, 112,  83,  94, 146, 133, 101,131, 116, 
        111,  84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
(3)创建画布,设置相关属性
plt.figure(figsize=(20, 8), dpi=100)
matplotlib.rc('font',family='SimHei',size=18)
# 设置组距
distance = 4
# 计算组数:用数据里最大的值减去最小值除以组距
group = int((max(time) - min(time)) / distance)
(4)直方图绘制
plt.hist(time, bins=group, facecolor="blue", edgecolor="black", alpha=0.7)
plt.xticks(range(min(time), max(time))[::2])
plt.grid(linestyle="-.", alpha=0.5,color='k')
plt.xlabel("电影时长")
plt.ylabel("数据量")
plt.show()

在这里插入图片描述

五、饼图基础绘制

#导入模块
import matplotlib.pyplot as plt
import matplotlib

#设置画布
plt.figure(figsize=(20, 8), dpi=100)

#显示中文字体
matplotlib.rc('font',family='SimHei',size=14)

#设置每个部分标签,扇形大小,颜色,扇形每个部分的突出值,
label = ["数学", "语文", "英语"]  
size = [40, 60, 5]
color = ["r", "g", "b"]     
explode = [0.05, 0.08, 0]   
patches, l_text, p_text = plt.pie(size, explode=explode, colors=color,labels=label,   #设置扇形、标签、百分比标签实例
                                  labeldistance=1.2,    #标签文本距离圆心位置,1.2倍半径
                                  autopct="%1.2f%%",   #设置圆内文本数据格式
                                  shadow=True,    #是否带有阴影
                                  startangle=90,  #设置起始角度,默认从0开始逆时针旋转
                                  pctdistance=0.7)  #设置圆内文本距圆心距离
  
plt.legend( loc='center left')
plt.axis("equal")  
plt.show()

在这里插入图片描述

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深耕玩家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值