目录

matplotlib应用介绍

一天天气变化图

两小时随机温度图

  中文显示问题

个人交往统计图

多人交往统计图

总结


介绍:

举个例子(一天天气变化图):

假设一天中每隔两个小时(range(2,26,2))的气温(℃)分别是[15,13,14.5,17,20,25,26,26,27,22,18,15],将其变成折线图进行展示

在windows中系统中展示的图片如图:

现在来优化代码:

设置图片大小

from matplotlib import pyplot as plt

x = range(2, 26, 2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15] # figure图形图标的意思,这里只画的图
# 通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例
# dpi 表示一个像素点的个数
plt.figure(figsize=(10, 7), dpi=80) # 绘制折线图
plt.plot(x, y)
# 保存(svg文件在浏览器中打开放大不会失帧)
plt.savefig('./sig_size.png')
# 展示图形
# plt.show()

图片展示

设置x,y轴的数值
from matplotlib import pyplot as plt

x = range(2, 26, 2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15] plt.figure(figsize=(10, 7), dpi=80) plt.plot(x, y) # 单独设置x轴
# _xticks = range(2, 26, 2) # list(_xticks): [2,4,6,8...]
_xticks = [i/2 for i in range(4, 49)] # [2.0, 2.5, 3.0, 3.5 .....]
# 刻度太密集可以使用列表步长
plt.xticks(_xticks[::3])
# y轴利用数据最小值最大值进行设置范围(最大值需要+1才能取到值)
plt.yticks(range(min(y), max(y)+1))
plt.show()

举个例子(两小时随机温度图)

如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?
a= [random.randint(20,35) for i in range(120)]

从逻辑上完成功能实现:

import random
from matplotlib import pyplot as plt x = range(0, 120)
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(16, 8), dpi=80)
plt.plot(x, y) # 设置x轴刻度
_xticks_label = ['10点{}分'.format(i) for i in range(60)]
_xticks_label += ['11点{}分'.format(i) for i in range(60)]
#rotation 旋转
plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45)
plt.yticks(range(min(y), max(y)+1))
plt.show()

但是会发现字体出现问题

所以需要解决字体的显示问题

所以在windows,或者linux中,可能有效的办法:

import random
import matplotlib from matplotlib import pyplot as plt
  # 这是windows和linux设置字体的方式
font = {
'family': 'MicroSoft YaHei',
'weight': 'bold',
'size': 'larger'
}
matplotlib.rc("font", **font)
# 类似于matplotlib.rc("font", family='MicroSoft YaHei', weight='blod', size='larger') x = range(0, 120)
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(16, 8), dpi=80)
plt.plot(x, y) # 设置x轴刻度
_xticks_label = ['10点{}分'.format(i) for i in range(60)]
_xticks_label += ['11点{}分'.format(i) for i in range(60)]
#rotation 旋转
 #取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45)
plt.yticks(range(min(y), max(y)+1))
plt.show()

但是不保证成功,因为电脑的字体配置情况不同

第二种推荐的方法:

自己设置字体文件:(字体库下载)windows在 C:\Windows\Fonts\路径下就是字体文件

import random
import matplotlib from matplotlib import pyplot as plt
from matplotlib import font_manager # 另一种设置字体的方式
my_font = font_manager.FontProperties(fname="./Hiragino Sans GB.ttc") x = range(0, 120)
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(16, 8), dpi=80)
plt.plot(x, y) # 设置x轴刻度
_xticks_label = ['10点{}分'.format(i) for i in range(60)]
_xticks_label += ['11点{}分'.format(i) for i in range(60)]
#rotation 旋转
plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45, fontproperties=my_font)
plt.yticks(range(min(y), max(y)+1))
plt.show()

可以通过size属性设置字体大小:

plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45, fontproperties=my_font, size=12)

再给折线图添加一些描述信息,就算完成了

import random
import matplotlib from matplotlib import pyplot as plt
from matplotlib import font_manager # 另一种设置字体的方式
my_font = font_manager.FontProperties(fname="./Hiragino Sans GB.ttc") x = range(0, 120)
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(14, 8), dpi=80)
plt.plot(x, y) # 设置x轴刻度
_xticks_label = ['10点{}分'.format(i) for i in range(60)]
_xticks_label += ['11点{}分'.format(i) for i in range(60)]
#rotation 旋转
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45, fontproperties=my_font, size=10)
plt.yticks(range(min(y), max(y)+1)) # 添加描述信息
plt.xlabel('时间', fontproperties=my_font, size=14)
plt.ylabel('温度(单位:℃)', fontproperties=my_font, size=14)
plt.title('10点到12点每分钟气温的变化情况', fontproperties=my_font, size=20) plt.show()

举个例子(个人交往统计图)

假设大家在30岁的时候,根据自己的实际情况,统计出来了从11岁到30岁每年交的女(男)朋友的数量如列表a,请绘制出该数据的折线图,以便分析自己每年交女(男)朋友的数量走势
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
要求:
y轴表示个数
x轴表示岁数,比如11岁,12岁等

from matplotlib import pyplot as plt
from matplotlib import font_manager my_font = font_manager.FontProperties(fname='./Hiragino Sans GB.ttc') x = range(11, 31)
y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
plt.figure(figsize=(10, 7), dpi=80)
plt.plot(x, y) _xtick_label = ['{}岁'.format(i) for i in x]
plt.xticks(x, _xtick_label, fontproperties=my_font)
# 辅助线
plt.grid(alpha=0.4) # 透明度
plt.xlabel('时间', fontproperties=my_font)
plt.ylabel('女朋友数(单位:个)', fontproperties=my_font)
plt.title('11到30岁之间谈过的女朋友的数量统计', fontproperties=my_font) plt.show()

举个例子(多人交往统计图)

假设大家在30岁的时候,根据自己的实际情况,统计出来了你和你同桌各自从11岁到30岁每年交的女(男)朋友的数量如列表a和b,

请在一个图中绘制出该数据的折线图,以便比较自己和同桌20年间的差异,同时分析每年交女(男)朋友的数量走势

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岁等

legend(loc=数字)

Location String Location Code
'best' 0
'upper right' 1
'upper left' 2
'lower left' 3
'lower right' 4
'right' 5
'center left' 6
'center right' 7
'lower center' 8
'upper center' 9
'center' 10

from matplotlib import pyplot as plt
from matplotlib import font_manager my_font = font_manager.FontProperties(fname='./Hiragino Sans GB.ttc') x = range(11, 31)
y1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]
plt.figure(figsize=(10, 7), dpi=80)
plt.plot(x, y1, label='自己', color='r', linestyle='--')
plt.plot(x, y2, label='同桌', linewidth=5, alpha=0.8)
_xticks_label = ['{}岁'.format(i) for i in x]
plt.xticks(x, _xticks_label, fontproperties=my_font)
plt.grid(alpha=0.4)
# 添加图例
plt.legend(prop=my_font, loc=0)
plt.show()

总结:

STXINGKA.TTF

matplotlib的使用--折线图--入门的更多相关文章

  1. matplotlib(二):折线图

    import numpy as np import matplotlib.pyplot as plt import matplotlib.dates as mdates # 解决中文显示问题 plt. ...

  2. 用matplotlib画简单折线图示例

    例1 import numpy as np import matplotlib.pyplot as plt from scipy import stats rx1 = np.array([54.52, ...

  3. 使用python内置库matplotlib,实现折线图的绘制

    环境准备: 需要安装matplotlib,安装方式: pip install matplotlib 直接贴代码喽: #引入模块 from matplotlib import pyplot,font_m ...

  4. python使用matplotlib绘制折线图教程

    Matplotlib是一个Python工具箱,用于科学计算的数据可视化.借助它,Python可以绘制如Matlab和Octave多种多样的数据图形.下面这篇文章主要介绍了python使用matplot ...

  5. matplotlib常见绘图基础代码小结:折线图、散点图、条形图、直方图、饼图

    一.折线图 二.散点图 三.条形图 四.直方图 五.饼图 一.折线图折线图用于显示随时间或有序类别的变化趋势 from matplotlib import pyplot as plt x = rang ...

  6. python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)

    最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...

  7. 用matplotlib.pyplot画简单的折线图,直方图,散点图

    #coding=utf-8 """ 用matplotlib.pyplot画简单的折线图,直方图,散点图 """ import matplot ...

  8. 练习: bs4 简单爬取 + matplotlib 折线图显示 (关键词,职位数量、起薪)

    要看一种技术在本地的流行程度,最简单的就是找招聘网站按关键词搜索. 比如今天查到的职位数量是vue 1296个,react 1204个,angular 721个.国际上比较流行的是react,本地市场 ...

  9. Matplotlib学习---用matplotlib画折线图(line chart)

    这里利用Jake Vanderplas所著的<Python数据科学手册>一书中的数据,学习画图. 数据地址:https://raw.githubusercontent.com/jakevd ...

随机推荐

  1. 《Windows核心编程系列》十谈谈同步设备IO与异步设备IO之异步IO

    同步设备IO与异步设备IO之异步IO介绍 设备IO与cpu速度甚至是内存访问相比较都是比较慢的,而且更不可预测.虽然如此,通过使用异步设备IO我们仍然能够创造出更高效的程序. 同步IO时,发出IO请求 ...

  2. InputFilter在过滤空格时重复输入的问题

    正确做法:editText.setFilters(new InputFilter[] { new InputFilter() { @Override public CharSequence filte ...

  3. SIFT特征点检测与匹配

    SIFT的步骤如下: (1) 尺度空间极值检测(Scale-space Extrema Detection) 也就是在多尺度高斯差分(Difference of Gauss)空间中检测极值点(3x3x ...

  4. COT2 - Count on a tree II(树上莫队)

    COT2 - Count on a tree II You are given a tree with N nodes. The tree nodes are numbered from 1 to N ...

  5. Android系统的启动流程

    手机启动后首先会通过执行BootLoader来启动Linux内核,BootLoader是所有嵌入式设备开机启动执行的第一行代码,linux内核在启动过程中会加载各种设备的驱动同时初始化数据结构,并且开 ...

  6. js点击修改按钮后修改

    <button id="click">改变内容</button> <div id="t">要改变的内容</div> ...

  7. javascript中闭包与作用域的理解

    很多js的框架与插件编写都用到了闭包,所以,阅读和掌握闭包很有必要.最近学习vue框架时,经常会猜想很多功能的native js实现,很多都应用到了闭包,闭包除了目前已知的一些特性,如:可以保持局部变 ...

  8. 04全志R58平台编译内核需要选择的配置

    04全志R58平台编译内核需要选择的配置 2018/11/6 14:19 版本:V1.0 开发板:SC5806 1.系统编译:(略) 每次系统编译/内核的时候都需要选3次N: * * Xtables ...

  9. codeforces_C. Maximum Subrectangle

    http://codeforces.com/contest/1060/problem/C 题意: a.b数组长度分别为n.m.矩阵C,Cij=ai*bj.在C中找到一个子矩阵,该子矩阵所有元素和不大于 ...

  10. 处理不同jQuery版本的兼容性问题

    众所周知,jquery版本很多,而且有些版本的冲突也非常明显,有一些网上流传的很实用的插件是用A版本写的,但是要实现另各功能又必須用B版本.所以实现版本之間的和平相处很重要. 1.这里介绍一个函数,可 ...