2021-02-15 matplotlib(绘制折线图)

1498-班同学

发表文章数:81

热门标签

首页 » 数据科学库 » 正文

基本要点

matplotlib是Python底层绘图库,主要做数据可视化图表,使数据更客观,更具说服力

导入

from matplotlib import pyplot as plt

设置图形大小

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

绘图

  • 图中绘制单个图形

    • plt.plot(x,y)
  • 图中绘制多个图形

    • plt.plot(x,y)多次调用,plt.plot(x,y_1),plt.plot(x,y_2)

调整刻度

plt.xticks()/plt.yticks()

  • 调整间距,传一个参数(包含数字的可迭代对象),选取所需间距

    • plt.xticks(x[::2])
  • 添加字符串到x,y轴,传入2个参数,分别是2个可迭代对象,数字和字符串会一一对应,且只显示字符串

    • _x =list(x) #强转为列表,方便取步长
      _x_ticks_label = ['10点{}分'.format(i) for i in range(60)]
      plt.xticks(_x[::5],_x_ticks_label[::5])

展示

plt.show()

保存

plt.savefig('file_path.png/svg')

显示中文

font_manager

  • 导入
    • from matplotlib import font_manager
  • 实例化一个字体对象
    • my_font = font_manager.FontProperties(fname='system/library/fonts/PingFang.ttc')
  • 使用(传参)
    • 在需要显示中文的地方添加fontproperties=my_font
    • 图例plt.legend()中使用prop=my_font

图例

  • 展示图中多条线代表谁
  • 对象1.plot(label = '唯一标识')
  • 对象2.legend(loc='图例位置上下左右中 center')

图形(网格)的样式

plt.plot() – 线条,图形
plt.grid() – 网格

  • 颜色 对象1.plot(color='w/orange/#DB7093')
  • 线条样式 对象1.plot(linestyle='--')
  • 线条宽度 对象1.plot(linewidth=5)
  • 透明度(从0-1)plt.grid(alpha=0.4)

其他自定义图形格式可百度

添加图形描述

  • x轴 plt.xticks()
  • y轴 plt.yticks()
  • 标题 plt.title()

实操


'''
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]

要求:
    y轴表示个数
    x轴表示岁数,比如11,12岁等

'''
from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname='/system/library/fonts/PingFang.ttc')

#设置图片大小
plt.figure(figsize=(20,8),dpi=80)

x = range(11,31)
y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]

#绘图
plt.plot(x,y_1,label='1号',color='orange',linestyle='--',linewidth=5)
plt.plot(x,y_2,label='2号',color='#DB7093',linestyle=':',linewidth=5)

#要在绘图之后才能保存图片,否则保存的是空白图
#plt.savefig('./sig_size.png')
#plt.savefig('./svg_size.svg')   #svg矢量图

#调整x,y轴

_x_ticks = ['{}岁'.format(i) for i in x]
plt.xticks(x,_x_ticks,fontproperties=my_font)
plt.yticks(range(0,9))

#添加图片描述
plt.xlabel('年龄',fontproperties=my_font)
plt.ylabel('恋爱个数',fontproperties=my_font)
plt.title('年龄与恋爱次数的比例',fontproperties=my_font)

#网格
plt.grid(alpha=0.5) #调整透明度 grid(alpha,从0-1)

#添加图例
# tips:只有在此处可用prop,其他地方接收中文字体需要用fontproperties
#  loc表示图例的位置 cmd+b查看源码可得指定图例位置的数字代码
plt.legend(prop=my_font,loc='center')

#展示
plt.show()

错误记录

1.ValueError: x and y must have same first dimension, but have shapes (1, 120) and (120,)
错误原因及改正:因为plt.plot(x,y)中应传入range类型而不是list类型,所以应将 x = [range(0,120)] 修改为 x = range(0,120)

2.ValueError: x and y must have same first dimension, but have shapes (19,) and (20,)
错误原因及改正:x轴与y轴刻度不一致,同时需要注意range()包头不包尾

未经允许不得转载:作者:1498-班同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《2021-02-15 matplotlib(绘制折线图)》 发布于2021-02-15

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录