科学数据库Python——matplotlib画折线图
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画折线图相关推荐
- python matplotlib画折线图_python使用matplotlib绘制折线图教程
matplotlib简介 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序 ...
- python matplotlib画折线图出现连线混乱_python使用matplotlib模块绘制多条折线图、散点图...
今天想直观的展示一下数据就用到了matplotlib模块,之前都是一张图只有一条曲线,现在想同一个图片上绘制多条曲线来对比,实现很简单,具体如下: #!usr/bin/env python #enco ...
- 如何使用python画折线图-Python 使用 matplotlib 画折线图教程
话不多说,直接上代码.最近修改一篇论文,实验部分的图全部重画了一下,也正好在此进行整理.使用 Python 的 matplotlib 库来画图还是比较方便的,今天整理一下用 matplotlib 画折 ...
- python设置折线图标题字体为宋体_python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)...
最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...
- Matplotlib画折线图
Matplotlib画折线图 有一些离散点,想看看这些点的变动趋势: import matplotlib.pyplot as pltx1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1 ...
- 使用python代码画折线图【matplotlib】
1.画折线图[一条示例] import matplotlib.pyplot as plt import numpy as npx_axis_data = [1,2,3,4,5,6,7] #x y_ax ...
- python如何绘制折线图-python如何画折线图
python画折线图利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图:# -*- coding: UTF-8 -*- import numpy as ...
- python画折线图详解-python如何画折线图
python画折线图利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图:# -*- coding: UTF-8 -*- import numpy as ...
- python画折线图-python如何画折线图
python画折线图利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图:# -*- coding: UTF-8 -*- import numpy as ...
最新文章
- 解决虚拟器device support x86 but apk only supports armeabi-v7
- 推荐8个冷门但硬核的软件和网站,你一定不能错过!
- Windows 窗体多线程
- UA MATH567 高维统计I 概率不等式3 亚高斯性与亚高斯范数
- Scala多线程:使用Executors提交Callable任务代码示例
- VTK:Points之PointOccupancy
- python去除视频马赛克_马赛克是否无法逆转?Python简单消除,看片无忧!
- Win32ASM学习[14]:符号扩展指令: CBW,CWDE,CDQ,CWD
- atoi函数_每日一道 LeetCode (50):字符串转换整数 (atoi)
- 揭秘自动驾驶纯视觉算法,探索自动驾驶的未来
- 设计模式笔记十九:备忘录模式
- java获取mysql时间格式化_Java与mysql的时间格式化问题,获取时间的上下午
- Ubuntu redmine 安装
- 适合有基础的Java实战项目——坦克大战 练手实战项目
- 小米商城网页制作代码
- ps使用抽出滤镜抠头发
- 惠普1139一体打印机如何联网打印_惠普1139 惠普1139打印扫描一体机功能
- win7 虚拟wifi服务器,在win7下建立虚拟wifi
- C51最小单片机系统
- 不要为优势忘乎所以——职场人士寓言(6)