利用Matplotlib绘制常见统计图

折线图

基本要点

  • 使用方法
from matplotlib import pyplot as plt # 导入pyplot

给x和y赋值为可迭代对象,然后plot.plot(x,y)传入x和y,通过plot绘制出折线图,再用plt.show()

高级用法

设置图片大小

fig = plt.figure(figsize = (20,8) , dpi = 80)

figsize传入宽和高的元组,dpi反映图的清晰程度,dpi = dots per inch

保存到本地

plt.savefig("./picture.png")

描述信息

设置x轴的刻度
plt.xticks(range(2,26,2))

可以传入一个列表
y轴刻度同理

  • 以字符串为刻度
_x = list(x)[::3] # 设置步长为3
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
plt.xticks(_x,_xtick_label[::3],rotation = 90) # _x和_xtick_label个数要相等,数字要一一对应
# rotation可以旋转坐标刻度的文字方向,使其更好地展示
设置中文显示
  • 需要导入中文字体文件
from matploitlib import font_manager
my_font = font_manager.FontProperties(fname="/filepath/..tcc") # 实例化一个字体
plt.xticks(...,fontproperties = my_font) # 在需要显示中文的地方传入参数,调用实例化后的my_font
设置x、y轴标题以及图表标题
plt.xlabel("x坐标的标题")
plt.ylabel("y坐标的标题")
plt.title("图表的标题")
绘制网格
plt.grid(alpha = 0.5) # grid绘制网格,参数alpha决定网格的透明度,有多少刻度就会生成多少网格

多条折线图

绘制多元折线图
plt.plot(x,y_1,label="第一条折线图代表的对象")
plt.plot(x,y_2,label="第二条折线图代表的对象")
# 多条折线图只需要多次plot即可,label参数方便区分两个折线图
显示图例
plt.legend() #显示图例
# 显示中文图例为
plt.legend(prop=my_font) # 只有在legend里字体参数用prop,其他都用fontproperties
# 调整图例位置
plt.legend(loc="upper left")
  • 图例位置:loc参数的合法值,可以是字符串也可以是对应的数字,Ctrl+B即可查看函数源码

    loc参数源码截图

调整xy刻度的间距

线条的样式

线条颜色
plt.plot(x,y,color="")
# r-红色 g-绿色 b-蓝色 w-白色 c-青色 m-洋红 y-黄色 k-黑色 
# 可以加16进制颜色值,也可以是灰度值字符串
线条风格
plt.plot(x,y,linestyle='--')
# 实线(-) 虚线(--) 点划线(.-) 点虚线(:) 留空或空格无线条('')
线条粗细
plt.plot(x,y,linewidth=5)

标记出特殊的点

给图片添加水印

散点图

plt.scatter(x,y) # 与折线图的唯一区别

柱形图

单条柱形图

  • 竖着的图是柱形图
a = ["战狼2","速度与激情8",...]
b = [56.81,26.94,...]
plt.bar(range(len(a)),b,width=0.3) # 柱形图传入的都是数字,可以设置柱形宽度
plt.xticks(range(len(a)),a) # 将字符串列表a与数字一一对应
plt.show() # 展示柱形图

多条柱形图

a = ["战狼2","速度与激情8",...]
b1 = [56.81,26.94,...]
b2 = [...]
b3 = [...]

x_1 = list(range(len(a)))
x_2 = [i+barwidth for i in x_1]
x_3 = [i+barwidth*2 for i in x_1]

plt.bar(range(len(a)),b1,width=barwidth,label="")
plt.bar(x_2,b2,width=barwidth,label="")
plt.bar(x_3,b3,width=barwidth,label="")

条形图

  • 横着的图是条形图
plt.barh(range(len(a)),b,height=0.3) # 横着的图要设置条形宽度需要用height

直方图

  • 只有没经过统计的原始数据才能绘制直方图

频数分布直方图

a = [...]

# 计算组数
d = 5 #组距
num_bins = (max(a) - min(a)) // d #组数

plt.hist(a,num_bins)

# 设置x轴的刻度
plt.xticks(range(min(a),max(a)+d,d))

频率分布直方图

plt.hist(a,num_bins,normed = True) # 将频数计算为频率

其他工具

百度Echarts

  • 实际工作学习中,可以利用某些前端工具生成可交互图如百度Echarts

Plotly

  • 可视化工具中的github,图形更加漂亮,比matplotlib简单,照着文档写即可
  • 文档地址:https://plot.ly/python/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值