matplotlib绘制折线图基础操作

  • matplotlib基础绘图
  • 设置图片大小
  • 保存到本地
  • 调整x或者y轴刻度的间距
  • 解决matplotlib的中文乱码问题
  • 标题、x轴和y轴的描述信息
  • 线条的样式
  • 为每条线添加图例
  • 设定颜色和线条宽度等
  • 给图片添加一个水印(防伪,防止盗用)

matplotlib基础绘图

from matplotlib import pyplot as plt
# 导入画图工具包
x = range(2,26,2)
y = [15,13,14.5,17,20,25,26,26,24,22,18,15]
# x,y分别表示数据在x轴和y轴所在的位置,是一个可迭代的对象
plt.plot(x,y) # 传入x和y,通过plot绘制出折线图
plt.show() # 在执行程序时展示图形

设置图片大小

我们想要一个高清无码的大图

fig = plt.figure(figsize = (20,8),dpi = 80)
# fugure表示图形的图标,就是指我们的图
# 通过实例化一个figure并且传递参数,让后台可以自动使用该figure的实例
# 在图像模糊的时候可以传入dpi参数
# dpi---dots per inch 释义为每英寸上点的个数,让图片更加清晰

保存到本地

x = range(2,26,2)
y = [15,13,14.5,17,20,25,26,26,24,22,18,15]
plt.plot(x,y)
plt.save("./sig_size.png") #保存图片
plt.show()

调整x或者y轴刻度的间距

# plt.xticks(x) #设置x轴的刻度
plt.xticks(range(2,25))
plt.yticks(range(min(y),max(y)+1))

输出结果为:

plt.xticks和plt.yticks用来显示x,y坐标轴的刻度值。
具体刻度值的取值可以通过一个列表来表示
我们更改下刻度值如下:
[2.0, 2.5, 3.0, 3.5, 4.0, 4.5, …, 24.0]


fig = plt.figure(figsize=(20,8),dpi = 80)
# 设置图像的大小格式
plt.plot(x,y)
plt.xticks(range(2,25))
plt.yticks(range(min(y),max(y)+1))
# plt.show() # 在执行程序的时候展示图形
# plt.xticks和plt.yticks用来显示x,y坐标轴的刻度值。
# 具体刻度值的取值可以通过一个列表来表示
plt.xticks([i/2 for i in range(4,49)])
# 表示x的刻度值为[2.0,2.5,3.0,3.5,4.0,4.5,...,24.0]
plt.show() # 在执行程序的时候展示图形

输出结果如下:

总结:通过往plt.xticks( )或者plt.yticks( )的括号中传入一个列表参数来刻画x轴或者y轴的刻度值。

当刻度太密集时候,使用列表的步长(间隔)来解决,matplotlib会自动帮我们对应,如:

x = range(2,26,2)
y = [15,13,14.5,17,20,25,26,26,24,22,18,15]
fig = plt.figure(figsize=(20,8),dpi = 80)
# 设置图像的大小格式
plt.plot(x,y)
plt.yticks(range(min(y),max(y)+1))
plt.xticks(([i/2 for i in range(5,49)])[2::2])
plt.show() # 在执行程序的时候展示图形

结果如下:

可以观察上面两幅图中,x轴刻度的起始位置和步长的变化。

解决matplotlib的中文乱码问题

问题:如果列表a表示10点到12点每一分钟的温度,那么如何绘制折线图描绘每一分钟的温度变化情况?

按照题目提示,我们要设定x轴坐标的刻度有两个,分别为:
10点__分 和 11点__分
即需要写伪代码:

plt.xticks([10点1分,10点2分,...,11点58分,11点59分])

接下来就是设定plt.xticks()这个括号中的列表,即设置x轴的刻度:[10点1分,10点2分,…,11点58分,11点59分]。

于是,可以通过遍历和列表的相加操作来实现。

_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]

通过以上操作,我们将时间分成两段:10点__分和11点__分两种类型,并且表示为列表格式,那么接下来我们试着传递列表参数到plt.xticks(_xtick_labels)中。

此时,会报错。

正确做法如下:

from matplotlib import font_manager
from matplotlib import pyplot as plt
import random
my_font = font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")
# 插入计算机中现有的中文字体

我们插入之后:

x = range(120)
y=[random.randint(20,35) for i in range(120)]
fig = plt.figure(figsize=(20,8),dpi = 80)
plt.plot(x,y)
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
# 双步长,数字和字符串一一对应,数据的长度一样。
# 双步长,数字和字符串一一对应,数据的长度一样。
plt.xticks(list(x)[::5],_xtick_labels[::5],rotation=45,fontproperties=my_font)
plt.show()

输出结果如下:

rotation=45 表示旋转45度角,这个可以自由更改。

标题、x轴和y轴的描述信息

plt.xlabel('时间',fontproperties = my_font,size=30)
plt.ylabel('温度(℃)',fontproperties = my_font,size=30)
plt.title("10点到12点每分钟的时间变化情况",fontproperties = my_font,size = 30)

输出结果如下:

中文字体在matplotlib中的显示得到完美解决。

线条的样式

实例练习
11岁到30岁的交友数量为列表a,请绘制该数据的折线图,分析自己每年交友数量的走势;
y轴表示个数,x轴表示岁数。

a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,1,2,3,4,1,3,1,1,1,1,1,1,1,1,1,1,1,1]
x = range(11,31)
y_1 = a
y_2 = b
fig = plt.figure(figsize=(20,8),dpi = 80)
plt.plot(x,y_1,label = "自己",color = "#ff3399",linestyle = ':',linewidth = '5')
plt.plot(x,y_2,label = "朋友",color = "Cyan",linestyle = '--',linewidth = '5')
# 百度颜色代码,如:#f3399就是设定的颜色
_xtick_labels = ["{}岁".format(i) for i in x]plt.xticks(list(x),_xtick_labels,rotation=45,fontproperties = my_font,size = 30) # rotation旋转的角度
plt.yticks(range(0,8))
plt.xlabel('年龄',fontproperties = my_font,size=30)
plt.ylabel('交友个数',fontproperties = my_font,size=30)
plt.title("11岁到30岁每年的交友数量变化情况",fontproperties = my_font,size = 30)
# 绘制网格
plt.grid(alpha=0.25)  #alpha 透明度,当alpha=1表示完全不透明
# 添加图例
plt.legend(prop=my_font,loc="upper right",fontsize=20)
plt.show() 

为每条线添加图例

plt.legend(prop=my_font,loc="upper right",fontsize=20)
plt.show()

设定颜色和线条宽度等

plt.plot(x,y_1,label = "自己",color = "#ff3399",linestyle = ':',linewidth = '5')
plt.plot(x,y_2,label = "朋友",color = "Cyan",linestyle = '--',linewidth = '5')

其中,#ff3399是RGB三原色对应的代码表。
其余颜色可以参照:RGB代码表

给图片添加一个水印(防伪,防止盗用)

# 添加水印
plt.text(x=20,               # 水印开头左下角对应的X点y=5,               # 水印开头左下角对应的Y点s="Hello world",    # 水印文本fontsize=50,       # 水印大小color="#ff0099",      # 水印颜色alpha=0.5)         # 水印是通过透明度控制的plt.show()

输出结果如下:

当然,这是添加英文的水印 “Hello world”

那么,如何添加中文水印呢?

plt.text(x=20,               # 水印开头左下角对应的X点y=5,               # 水印开头左下角对应的Y点s="加个中文水印",    # 水印文本fontsize=50,       # 水印大小color="#ff0099",      # 水印颜色alpha=0.5,        # 水印是通过透明度控制的fontproperties = my_font)         plt.show()

输出结果如下:

无非是加上这么一句话: fontproperties = my_font 读取一下中文字体的格式。

科学数据库Python——matplotlib画折线图相关推荐

  1. python matplotlib画折线图_python使用matplotlib绘制折线图教程

    matplotlib简介 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序 ...

  2. python matplotlib画折线图出现连线混乱_python使用matplotlib模块绘制多条折线图、散点图...

    今天想直观的展示一下数据就用到了matplotlib模块,之前都是一张图只有一条曲线,现在想同一个图片上绘制多条曲线来对比,实现很简单,具体如下: #!usr/bin/env python #enco ...

  3. 如何使用python画折线图-Python 使用 matplotlib 画折线图教程

    话不多说,直接上代码.最近修改一篇论文,实验部分的图全部重画了一下,也正好在此进行整理.使用 Python 的 matplotlib 库来画图还是比较方便的,今天整理一下用 matplotlib 画折 ...

  4. python设置折线图标题字体为宋体_python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)...

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

  5. Matplotlib画折线图

    Matplotlib画折线图 有一些离散点,想看看这些点的变动趋势: import matplotlib.pyplot as pltx1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1 ...

  6. 使用python代码画折线图【matplotlib】

    1.画折线图[一条示例] import matplotlib.pyplot as plt import numpy as npx_axis_data = [1,2,3,4,5,6,7] #x y_ax ...

  7. python如何绘制折线图-python如何画折线图

    python画折线图利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图:# -*- coding: UTF-8 -*- import numpy as ...

  8. python画折线图详解-python如何画折线图

    python画折线图利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图:# -*- coding: UTF-8 -*- import numpy as ...

  9. python画折线图-python如何画折线图

    python画折线图利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图:# -*- coding: UTF-8 -*- import numpy as ...

最新文章

  1. 解决虚拟器device support x86 but apk only supports armeabi-v7
  2. 推荐8个冷门但硬核的软件和网站,你一定不能错过!
  3. Windows 窗体多线程
  4. UA MATH567 高维统计I 概率不等式3 亚高斯性与亚高斯范数
  5. Scala多线程:使用Executors提交Callable任务代码示例
  6. VTK:Points之PointOccupancy
  7. python去除视频马赛克_马赛克是否无法逆转?Python简单消除,看片无忧!
  8. Win32ASM学习[14]:符号扩展指令: CBW,CWDE,CDQ,CWD
  9. atoi函数_每日一道 LeetCode (50):字符串转换整数 (atoi)
  10. 揭秘自动驾驶纯视觉算法,探索自动驾驶的未来
  11. 设计模式笔记十九:备忘录模式
  12. java获取mysql时间格式化_Java与mysql的时间格式化问题,获取时间的上下午
  13. Ubuntu redmine 安装
  14. 适合有基础的Java实战项目——坦克大战 练手实战项目
  15. 小米商城网页制作代码
  16. ps使用抽出滤镜抠头发
  17. 惠普1139一体打印机如何联网打印_惠普1139 惠普1139打印扫描一体机功能
  18. win7 虚拟wifi服务器,在win7下建立虚拟wifi
  19. C51最小单片机系统
  20. 不要为优势忘乎所以——职场人士寓言(6)

热门文章

  1. mule实现双向光闸
  2. celery 基本使用
  3. geode java_Java连接Geode示例
  4. SQL中Group By的使用
  5. 通过实例理解决策树算法(ID3,C4.5,Cart算法)
  6. 失去目标的时候进来洗洗脑
  7. mysql浮标_vue 实现微信浮标效果
  8. jackson设置返回null为空字符串
  9. Linux下控制打印机笔记
  10. 小程序测试与app测试的区别