利用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即可查看函数源码

    利用Matplotlib绘制常见统计图_第1张图片

调整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/

你可能感兴趣的:(Python,python,数据可视化,数据分析)