绘图神器-matplotlib入门

这次,让我们使用一个非常有名且十分有趣的玩意儿来完成今天的任务,没错它就是jupyter。

一、安装jupyter

matplotlib入门之前,先安装好jupyter。这里只提供最为方便快捷的安装方式:pip install jupyter

我这里已经装过了

启动jupyter也十分简单:jupyter notebook

执行命令后,自动启动服务,并自动打开浏览器,jupyter就长这样

找到你想要的目录,右上角new-->python3新建一个可以执行python3代码的jupyter文件

新文件长这样。虽说每个cell独立,但是下一个cell还是可以引用上一个cell的变量

补充:jupyter下一些常用的快捷命令

ctrl+enter    执行当前cell
shift+enter    执行当前cell并跳到下一个cell
dd            删除当前cell
a            向上建一个cell
b            向下建一个cell
esc+m/m        将当前cell切换为markdown模式
esc+y/y        将当前cell切换为code模式
esc+l/l        显示/隐藏当前cell的行号
o            收起或打开当前cell的output
shift        选中多个cell
shift+m        合并多个cell

二、matplotlib入门

什么是matplotlib

官方给出的解释是:Matplotlib is a Python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms.You can generate plots, histograms, power spectra, bar charts, errorcharts, scatterplots, etc., with just a few lines of code.

Matplotlib是一个Python的2D绘图库它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。只需要几行代码,你就可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。

0.安装依赖库:matplotlib、numpy(pip install *)

numpy是python的一种开源的数值计算扩展库。这种工具可用来进行大型矩阵数据类型处理、矢量处理,以及精密运算。

(小声说一句,这俩货是机器学习三剑客中的两个)

牛刀小试:

可以看到,代码虽然只有3行,但却非常直观的绘制出了一条线形图。

data = np.arange(100, 200) :生成100-200之间的整数数组,它的值是[100,101...200]

plt.plot(data):将上述数组绘制出来,对应图中y轴,而matplotlib本身默认给我们设置了[0,100]的x轴,使其一一对应

plt.show():将图片展示出来

1.绘制线形图

import matplotlib.pyplot as plt

plt.plot([100, 200, 300], [300, 600, 900], ‘-r‘)
plt.plot([100, 200, 300], [200, 400, 900], ‘:g‘)
plt.plot([200, 300, 400], [800, 100, 600], ‘-y‘)

plt.show()

plot接受的三个参数,第一个参数是数组,作为x轴的值;第二个参数也是数组,作为y轴的值;第三个参数则表明线形图是属性,图的构成和颜色,如上一依次是:红色直线、绿色点线、黄色直线。

2.绘制散点图

import matplotlib.pyplot as plt
import numpy as np

N = 20

plt.scatter(np.random.rand(N) * 100,
           np.random.rand(N) *100,
           c=‘r‘, s=100, alpha=0.5)

plt.scatter(np.random.rand(N) * 100,
           np.random.rand(N) *100,
           c=‘y‘, s=200, alpha=0.8)

plt.scatter(np.random.rand(N) * 100,
           np.random.rand(N) *100,
           c=‘b‘, s=300, alpha=0.5)

plt.show()

这幅图包含了三组数据,每组数据都包含了20个随机坐标的位置。参数c表示点的颜色,s是点的大小,alpha是透明度

scatter绘制散点图详细文档,参考:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html#matplotlib.pyplot.scatter

3.饼状图

import matplotlib.pyplot as plt
import numpy as np

labels = [‘suger‘, ‘popo‘, ‘python‘, ‘java‘, ‘ruby‘, ‘c#‘]
data = np.random.rand(6) * 100

plt.pie(data, labels=labels, autopct=‘%1.1f%%‘)
plt.axis(‘equal‘)
plt.legend()

plt.show()

data是一组包含6个数据的随机数值;图中的标签通过labels来指定;autopct指定了数值的精度格式;plt.axis(‘equal‘)设置了坐标轴大小一致;plt.legend()指明要绘制图。

pie绘制饼状图详细参考:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.pie.html?highlight=pie#matplotlib.pyplot.pie

4.条形图

import matplotlib.pyplot as plt
import numpy as np

N = 7
x = np.arange(N)

data = np.random.randint(low=0, high=100, size=N)
colors = np.random.rand(N * 3).reshape(N, -1)
labels = [‘Mon‘, ‘Tue‘, ‘Wed‘, ‘Thu‘, ‘Fri‘, ‘Sat‘, ‘Sun‘]

plt.title(‘Weekday Data‘)
plt.bar(x, data, alpha=0.8, color=colors, tick_label=labels)
plt.show()

# 此图展示了一组包含7个随机数值的结果,每个数值是[0, 100]的随机数
# 它们的颜色也是通过随机数生成的。np.random.rand(N * 3).reshape(N, -1)表示先生成21(N x 3)个随机数,然后将它们组装成7行,那么每行就是三个数,这对应了颜色的三个组成部分
# title指定了图形的标题,labels指定了标签,alpha是透明度

bar绘制条形图官方文档:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.bar.html?highlight=bar#matplotlib.pyplot.bar

5.直方图

import matplotlib.pyplot as plt
import numpy as np

data = [np.random.randint(0, n, n) for n in [3000, 4000, 5000]]
labels = [‘3k‘, ‘4k‘, ‘5k‘]
bins = [0, 100, 500, 1000, 2000, 3000, 4000, 5000]

plt.hist(data, bins=bins, label=labels)
plt.legend()

plt.show()

# [np.random.randint(0, n, n) for n in [3000, 4000, 5000]]生成了包含3个数组的数组:第一个数组包含了3000个随机数,这些随机数的范围是 [0, 3000);第二个数组包含了4000个随机数,这些随机数的范围是 [0, 4000);第三个数组包含了5000个随机数,这些随机数的范围是 [0, 5000)

# bins设置直方图的边界。[0, 100, 500, 1000, 2000, 3000, 4000, 5000]一共设置了7个边界,如:第一个边界是[0,100),则有一个据点,符合边界范围的图片将会在其中绘制

# 三组数据都有3000以下的数据,图中3000以下的据点也都有数据,[3000,4000)据点没有了3k的数据,而[4000,5000)据点则只剩下5k的数据了

hist绘制直方图的更多用法:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html?highlight=hist#matplotlib.pyplot.hist

以上,目前我们已经学会了绘制简单的线形图、散点图、饼状图、条形图和直方图,显然这只是皮毛,真正让人叹为观止的图,尽在matplotlib gallery

这里摘取一个示例:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

w = 3
Y, X = np.mgrid[-w:w:100j, -w:w:100j]
U = -1 - X**2 + Y
V = 1 + X - Y**2
speed = np.sqrt(U*U + V*V)

fig = plt.figure(figsize=(7, 9))
gs = gridspec.GridSpec(nrows=3, ncols=2, height_ratios=[1, 1, 2])

#  Varying density along a streamline
ax0 = fig.add_subplot(gs[0, 0])
ax0.streamplot(X, Y, U, V, density=[0.5, 1])
ax0.set_title(‘Varying Density‘)

# Varying color along a streamline
ax1 = fig.add_subplot(gs[0, 1])
strm = ax1.streamplot(X, Y, U, V, color=U, linewidth=2, cmap=‘autumn‘)
fig.colorbar(strm.lines)
ax1.set_title(‘Varying Color‘)

#  Varying line width along a streamline
ax2 = fig.add_subplot(gs[1, 0])
lw = 5*speed / speed.max()
ax2.streamplot(X, Y, U, V, density=0.6, color=‘k‘, linewidth=lw)
ax2.set_title(‘Varying Line Width‘)

# Controlling the starting points of the streamlines
seed_points = np.array([[-2, -1, 0, 1, 2, -1], [-2, -1,  0, 1, 2, 2]])

ax3 = fig.add_subplot(gs[1, 1])
strm = ax3.streamplot(X, Y, U, V, color=U, linewidth=2,
                     cmap=‘autumn‘, start_points=seed_points.T)
fig.colorbar(strm.lines)
ax3.set_title(‘Controlling Starting Points‘)

# Displaying the starting points with blue symbols.
ax3.plot(seed_points[0], seed_points[1], ‘bo‘)
ax3.axis((-w, w, -w, w))

# Create a mask
mask = np.zeros(U.shape, dtype=bool)
mask[40:60, 40:60] = True
U[:20, :20] = np.nan
U = np.ma.array(U, mask=mask)

ax4 = fig.add_subplot(gs[2:, :])
ax4.streamplot(X, Y, U, V, color=‘r‘)
ax4.set_title(‘Streamplot with Masking‘)

ax4.imshow(~mask, extent=(-w, w, -w, w), alpha=0.5,
          interpolation=‘nearest‘, cmap=‘gray‘, aspect=‘auto‘)
ax4.set_aspect(‘equal‘)

plt.tight_layout()
plt.show()

原文地址:https://www.cnblogs.com/mikasama/p/9746989.html

时间: 2024-10-29 14:56:54

绘图神器-matplotlib入门的相关文章

引言:Canvas绘图API快速入门

引言:Canvas绘图API快速入门 在接触HTML5的初学者包括我都在很多地方见到非常炫的一些页面,甚至好多学习HTML5的开发者都是冲着Web端的页游去的,那么HTML5那么绚丽的页面效果以及游戏动画效果的原理是怎样的?本篇文章将带您在20分钟内快速了解和上手HTML5游戏开发的神器:Canvas绘制API. 一.Canvas是什么? Canvas就是一个画布,可以进行画任何的线.图形.填充等一系列的操作,而且操作的画图就是js,所以让js编程到了嗑药的地步.另外Canvas不仅仅提供简单的

Python 绘图包 Matplotlib Pyplot 教程

Pyplot 接口简介 Pyplot 入门 matplotlib.pyplot?是命令风格函数的集合,使 Matplotlib 像 MATLAB 一样工作.每个 Pyplot 函数对图形做一些修改,例如:创建一个图形,在图形中创建一个绘图区域,在绘图区域中回值一些线条,用标签装饰图形等等. 在?matplotlib.pyplot中,在函数调用之间保留了各种状态,以便跟踪当前图形和绘图区域等内容,绘图函数指向当前 轴(Axes 对象). 注意 Pyplot API 通常不如面向对象的 API 灵活

Matplotlib 入门

章节 Matplotlib 安装 Matplotlib 入门 Matplotlib 基本概念 Matplotlib 图形绘制 Matplotlib 多个图形 Matplotlib 其他类型图形 Matplotlib 柱状图 Matplotlib 饼图 Matplotlib 直方图 Matplotlib 散点图 Matplotlib 填充图 Matplotlib 网格 Matplotlib 极坐标图 Matplotlib 3D图 Matplotlib 保存图形 绘制一个简单图形 让我们从一个简单的

Python绘图工具matplotlib的安装

今天在机子上安装matplotlib遇到一些问题,特将此记录下来,供大家分享以少走弯路. 1:下载matplotlib 去官网上下载你所需要的版本http://matplotlib.org/download.html,  注意这里的32位和64位指的是python版本.由于是exe文件,直接安装即可. 2:import matplotlib 当我在python shell 中使用命令import matplotlib时出现了以下错误 此时我们需要安装dateutil,这里需要使用easy_ins

python 绘图:matplotlib

matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 入门: http://matplotlib.org/users/pyplot_tutorial.html#pyplot-tutorial matplotlib还提供了一个名为pylab的模块,其中包括了许多NumPy和pyplot模块中常用的函数,方便用户快速进行计算和绘图,十分适合在IPython交互式环境中使用.

Python3绘图之Matplotlib(01)

1 First plots with Matplotlib 简单的绘图1 简单的绘图2 简单的绘图3 2 网格 = grid 3 设置坐标轴的取值范围 = axis xlim ylim 方法1:整体设置 [xmin, xmax, ymin, ymax]   ===>plt.axis([xmin, xmax, ymin, ymax]) 方法2:分别设置 plt.xlim([xmin, xmax]) plt.ylim([ymin, ymax]) 4 设置坐标含义标签 = label 5 设置图片的整

数据分析与展示---Matplotlib入门

简介: 一:Matplotlib库的介绍 (一)简单使用 二:区域划分subplot 三:plot函数 四:pyplot的中文显示 (一)方法一:修改rcParams参数 (二)方法二(推荐),在有中文地方增加属性:fontproperties 五:pyplot的文本显示方法 六:pyplot的子绘图区域 (一)subplot2grid() (二)GridSpec类加上subplot方法 一:Matplotlib库的介绍 (一)简单使用 import matplotlib.pyplot as p

python绘图之matplotlib

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形  . 通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等.但是还有pylab也很好用. 网上大部分的博客文章对这二者的解释基本千篇一律,也就是: 对Pyplot的解说:"方便快速绘图matplotlib通过pyplot模块提供了一套和MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在这套API内部.&

linux matplotlib入门

python linux matplotlib 安装:  1 sudo apt-get install python-numpy 必须 先安装numpy matplotlib 安装:  1 sudo apt-get install python-matplotlib matplotlib手册: http://pan.baidu.com/s/1i4nmRhb 可以当工具.