目录

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核心编程系列》二十谈谈DLL高级技术

    本篇文章将介绍DLL显式链接的过程和模块基地址重定位及模块绑定的技术. 第一种将DLL映射到进程地址空间的方式是直接在源代码中引用DLL中所包含的函数或是变量,DLL在程序运行后由加载程序隐式的载入, ...

  2. Android最简单的实例 :环境搭建及HelloWorld

    Android开发之旅:环境搭建及HelloWorld 2010-04-12 00:45 by 吴秦, 883961 阅读, 140 评论, 收藏,  编辑 ——工欲善其事必先利其器 引言 本系列适合 ...

  3. form表单ajaxSubmit提交并验证

    html: <form class="register-form" action="{:U('')}" method="post"&g ...

  4. android环境搭建环境 cordova run android gradle wrapper报错

    cordova run android命令报错 Error: Could not find an installed version of Gradle either in Android Studi ...

  5. 关于docker入门教程

    简介:docker入门教程 docker入门教程翻译自docker官方网站的Docker getting started 教程,官方网站:https://docs.docker.com/linux/s ...

  6. Java Hello World 错误 找不到或无法加载主类

    Java 有几年没用了 生疏了好多 最近又捡起来 结果第一个Hello World 就在黑窗口内报错! 遇到几个小问题. 1. 安装JDK后 在 CMD 中 执行 java -version 正常 因 ...

  7. vb,wps,excel 分裂

    Sub 分列() '以空格为分隔符,连续空格只算1个.对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integ ...

  8. (转)SpringMVC学习(十一)——SpringMVC实现Resultful服务

    http://blog.csdn.net/yerenyuan_pku/article/details/72514034 Restful就是一个资源定位及资源操作的风格,不是标准也不是协议,只是一种风格 ...

  9. swift class extension 与继承

    1.扩展中无法继承重写已有函数,不能添加函数. Extensions can add new functionality to a type, but they cannot override exi ...

  10. Day3 CSS 引入及基本选择器

    一 .CSS 层叠样式表,为了使网页元素的样式更加丰富,内容与样式拆分开来.HTML负责结构与内容,表现形式交给CSS. CSS注释/**/ 来注释 二.CSS基本语法与引用 CSS的语法结构 选择器 ...