matplotlib模块

阿里云双11来了!从本博客参与阿里云,服务器最低只要86元/年!

目录

matplotlib简介

Matplotlib是一个强大的Python绘图和数据可视化的工具包。数据可视化也是我们数据分析的最重要的工作之一,可以帮助我们完成很多操作,例如:找出异常值、必要的一些数据转换等。完成数据分析的最终结果也许就是做一个可交互的数据可视化。

安装方式:pip install matplotlib

引用方法:import matplotlib.pyplot as plt

import numpy as np
import pandas as pd
from numpy.random import randn
import matplotlib.pyplot as plt
# 一般使用下面的这个语句设置字体,不然会乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

支持的图类型

函数说明
plt.plot(x,y,fmt)坐标系
plt.boxplot(data,notch,position)箱型图
plt.bar(left,height,width,bottom)柱状图
plt.barh(width,bottom,left,height)横向柱状图
plt.polar(theta,r)极坐标系
plt.pie(data,explode)饼图
plt.psd(x,NFFT=256,pad_to,Fs)功率谱密度图
plt.specgram(x,NFFT=256,pad_to,F)谱图
plt.cohere(x,y,NFFT=256,Fs)X-Y相关性函数
plt.scatter(x,y)散点图
plt.step(x,y,where)步阶图
plt.hist(x,bins,normed)直方图

图像的标注

方法描述
plt.title()设置图像标题
plt.xlabel()设置x轴名称
plt.ylabel()设置y轴名称
plt.xlim()设置x轴范围
plt.ylim()设置y轴范围
plt.xticks()设置x轴刻度
plt.yticks()设置y轴刻度
plt.legend()设置曲线图例

绘制折线图

  • 线型linestyle(-,-.,–,..)
  • 点型marker(v,^,s,*,H,+,X,D,O,…)
  • 颜色color(b,g,r,y,k,w,…)
# 修改背景为条纹
plt.style.use('ggplot')
np.random.seed(1)
# 使用numpy的累加和,保证数据取值范围不会在(0,1)内波动
plot_data1 = randn(40).cumsum()
plot_data2 = randn(40).cumsum()
plot_data3 = randn(40).cumsum()
plot_data4 = randn(40).cumsum()
plt.plot(plot_data1, marker='o', color='red', linestyle='-', label='红实线')
plt.plot(plot_data2, marker='x', color='orange', linestyle='--', label='橙虚线')
plt.plot(plot_data3, marker='*', color='yellow', linestyle='-.', label='黄点线')
plt.plot(plot_data4, marker='s', color='green', linestyle=':', label='绿点图')
# loc='best'给label自动选择最好的位置
plt.legend(loc='best')
plt.show()

绘制条形图

# 柱状图
data = [12,34,23,54]
labels = ['Jan','Fed','Mar','Apr']
plt.xticks([0,1,2,3],labels)  # 设置x轴刻度
plt.bar([0,1,2,3],data)  
<BarContainer object of 4 artists>

# 横向柱状图
data = [12,34,23,54]
labels = ['Jan','Fed','Mar','Apr']
plt.yticks([0,1,2,3],labels)
plt.barh([0,1,2,3],data)   
<BarContainer object of 4 artists>

# DataFrame数组图
df = pd.DataFrame({
    'Jan':pd.Series([1,2,3],index=['a','b','c']),
    'Fed':pd.Series([4,5,6],index=['b','a','c']),
    'Mar':pd.Series([7,8,9],index=['b','a','c']),
    'Apr':pd.Series([2,4,6],index=['b','a','c'])
})
df.plot.bar()  # 水平柱状图,将每一行中的值分组到并排的柱子中的一组
df.plot.barh(stacked=True,alpha=0.5)  # 横向柱状图,将每一行的值堆积到一起
<matplotlib.axes._subplots.AxesSubplot at 0x1dcc7928940>

直方图

# 修改背景为条纹
plt.style.use('ggplot')
mu1, mu2, sigma = 50, 100, 10
# 构造均值为50的符合正态分布的数据
x1 = mu1 + sigma * np.random.randn(10000)
# 构造均值为100的符合正态分布的数据
x2 = mu2 + sigma * np.random.randn(10000)
fig = plt.figure()
ax1 = fig.add_subplot(121)
# bins=50表示每个变量的值分成50份,即会有50根柱子
ax1.hist(x1, bins=50, color='darkgreen')
ax2 = fig.add_subplot(122)
ax2.hist(x2, bins=50, color='orange')
fig.suptitle('两个正态分布',fontweight='bold', fontsize=15)
ax1.set_title('绿色的正态分布')
ax2.set_title('橙色的正态分布')
plt.show()

饼图

plt.pie([10,20,30,40],labels=list('abcd'),autopct="%.2f%%",explode=[0.1,0,0,0])
plt.axis("equal")
plt.show()

散点图

import random
x = np.random.randn(100)
y = np.random.randn(100)
plt.scatter(x,y)
<matplotlib.collections.PathCollection at 0x1dcc9f30f28>

保存图标到文件

plt.savefig(filename.拓展名)

参数说明
fname含有文件路径的字符串或者Python的文件型对象。
dpi图像分辨率,默认为100
format显示设置文件格式(“png”,”jpg”,”pdf”,”svg”,”ps”,…)
facecolor、edgecolor背景色,默认为”W”(白色)
bbox_inches图表需要保存的部分。设置为”tight“,则尝试剪除图表周围空白部分

文件类型是通过文件扩展名推断出来的。因此,如果你使用的是.pdf,就会得到一个PDF文件。

savefig并非一定要写入磁盘,也可以写入任何文件型的对象,比如BytesIO:

from io import BytesIO
buffer = BytesIO()
plt.savefig(buffer)
plot_data = buffer.getvalue()

https://www.cnblogs.com/Hades123/p/11739300.html

Python量化投资网携手4326手游为资深游戏玩家推荐:《节后视觉疲劳?快使用《我的世界》式的华丽来给自己洗洗眼睛

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论