matplotlib绘图

%matplotlib notebook    #会在 Notebook 中启动交互式图形。

%matplotlib inline    #会在 Notebook 中启动静态图形。

 

 

import matplotlib as mpl

import matplotlib.pyplot as plt

plt.style.use('classic')            #设置绘图样式,classic风格

plt.style.use('seaborn-whitegrid')   #网格样式

 

eg:1

%matplotlib inline

import matplotlib.pyplot as plt

import numpy as np

x = np.linspace(0, 10, 100)

fig = plt.figure()

plt.plot(x, np.sin(x), '-')

plt.plot(x, np.cos(x), '--');

plt.show()

fig.savefig('C:/variety_project/dataScience/my_figure.png')            #保存画出的图

 

 

from IPython.display import Image

Image('C:/variety_project/dataScience/my_figure.png')   #显示图片

 

 

Eg:2         MATLAB风格接口

plt.figure() # 创建图形

# 创建两个子图中的第一个,设置坐标轴

plt.subplot(2, 1, 1) # (行、列、子图编号)

plt.plot(x, np.sin(x))

# 创建两个子图中的第二个,设置坐标轴

plt.subplot(2, 1, 2)

plt.plot(x, np.cos(x));

matplotlib绘图_第1张图片

 

plt.gcf()(获取当前图形)

plt.gca()(获取当前坐标轴)

 

 

 

eg:3        面向对象接口

# 先创建图形网格

# ax是一个包含两个Axes对象的数组

fig, ax = plt.subplots(2)

# 在每个对象上调用plot()方法

ax[0].plot(x, np.sin(x))

ax[1].plot(x, np.cos(x));

matplotlib绘图_第2张图片

 

 

 

Eg:4

fig = plt.figure()

ax = plt.axes()

x = np.linspace(0, 10, 1000)

ax.plot(x, np.sin(x));

ax.set(xlim=(0, 10), ylim=(-2, 2),xlabel='x', ylabel='cos(x)',title='A Simple Plot');

 

Eg:5          color设置颜色

plt.plot(x, np.sin(x - 0), color='blue') # 标准颜色名称

plt.plot(x, np.sin(x - 1), color='g') # 缩写颜色代码(rgbcmyk)

plt.plot(x, np.sin(x - 2), color='0.75') # 范围在0~1的灰度值

plt.plot(x, np.sin(x - 3), color='#FFDD44') # 十六进制(RRGGBB,00~FF)

plt.plot(x, np.sin(x - 4), color=(1.0,0.2,0.3)) # RGB元组,范围在0~1

plt.plot(x, np.sin(x - 5), color='chartreuse'); # HTML颜色名称

 

eg:6        linestyle设置线型

plt.plot(x, x + 0, linestyle='solid')

plt.plot(x, x + 1, linestyle='dashed')

plt.plot(x, x + 2, linestyle='dashdot')

 plt.plot(x, x + 3, linestyle='dotted');

# 你可以用下面的简写形式

plt.plot(x, x + 4, linestyle='-') # 实线

plt.plot(x, x + 5, linestyle='--') # 虚线

plt.plot(x, x + 6, linestyle='-.') # 点划线

plt.plot(x, x + 7, linestyle=':'); # 实点线

 

eg:7   线型和颜色结合

plt.plot(x, x + 0, '-g') # 绿色实线

plt.plot(x, x + 1, '--c') # 青色虚线

plt.plot(x, x + 2, '-.k') # 黑色点划线

plt.plot(x, x + 3, ':r'); # 红色实点线

 

 

eg:8   自定义坐标轴上下限

plt.plot(x, np.sin(x))

plt.xlim(-1, 11)

plt.ylim(-1.5, 1.5);

 

 

eg:9           通过传入[xmin, xmax, ymin, ymax]控制图形

plt.plot(x, np.sin(x))

plt.axis([-1, 11, -1.5, 1.5]);      #通过传入[xmin, xmax, ymin, ymax]

 

eg:10

plt.plot(x, np.sin(x))

plt.axis('tight');            #收紧坐标轴,不留空白区域

plt.axis('equal');

 

 

eg:11       设置图形标签

plt.plot(x, np.sin(x))

plt.title("A Sine Curve")    #设置图名

plt.xlabel("x")           #设置x轴标签

plt.ylabel("sin(x)");         #设置y轴标签

plt.plot(x, np.sin(x), '-g', label='sin(x)')         #设置图例

plt.plot(x, np.cos(x), ':b', label='cos(x)')          #设置图例

plt.axis('equal')

plt.legend();        #创建图例

 

 

 

 

 

plt 函数转换成 ax 方法

plt.plot() → ax.plot()

plt.legend() → ax.legend()

plt.xlabel() → ax.set_xlabel()

plt.ylabel() → ax.set_ylabel()

plt.xlim() → ax.set_xlim()

plt.ylim() → ax.set_ylim()

plt.title() → ax.set_title()

 

 

eg:12  画散点图

plt.scatter(x, y, marker='o');

 

 

rng = np.random.RandomState(0)

x = rng.randn(100)

y = rng.randn(100)

colors = rng.rand(100)

sizes = 1000 * rng.rand(100)

plt.scatter(x, y, c=colors, s=sizes, alpha=0.3,cmap='viridis')

plt.colorbar(); # 显示颜色条

 

 

eg:13  绘制误差线

%matplotlib inline

import matplotlib.pyplot as plt

plt.style.use('seaborn-whitegrid')

import numpy as np

x = np.linspace(0, 10, 50)

dy = 0.8

y = np.sin(x) + dy * np.random.randn(50)

plt.errorbar(x, y, yerr=dy, fmt='.k');

plt.errorbar(x, y, yerr=dy, fmt='o', color='black',ecolor='lightgray', elinewidth=3, capsize=0);

matplotlib绘图_第3张图片

 

 

密度图与等高线图

用 plt.contour 画等高线图、用 plt.contourf 画带有填充色的等高线图(filled contourplot)的色彩、用 plt.imshow 显示图形

Eg:14  画等高线

x = np.linspace(0, 5, 50)

y = np.linspace(0, 5, 40)

X, Y = np.meshgrid(x, y)

Z = np.sin(X) ** 10 + np.cos(10 + Y * X) * np.cos(X)

plt.contour(X, Y, Z, colors='black');

 

plt.contourf(X, Y, Z, 20, cmap='RdGy')

plt.colorbar();

 

 

频率分布直方图

Eg:15     plt.hist频率分布直方图

%matplotlib inline

import numpy as np

import matplotlib.pyplot as plt

plt.style.use('seaborn-white')

data = np.random.randn(1000)

plt.hist(data);

 

 

 

绘制三维图

Eg:15

from mpl_toolkits import mplot3d

%matplotlib inline

import numpy as np

import matplotlib.pyplot as plt

fig = plt.figure()

ax = plt.axes(projection='3d')

 

 

eg:16

ax = plt.axes(projection='3d')

# 三维线的数据

zline = np.linspace(0, 15, 1000)

xline = np.sin(zline)

yline = np.cos(zline)

ax.plot3D(xline, yline, zline, 'gray')

# 三维散点的数据

zdata = 15 * np.random.random(100)

xdata = np.sin(zdata) + 0.1 * np.random.randn(100)

ydata = np.cos(zdata) + 0.1 * np.random.randn(100)

ax.scatter3D(xdata, ydata, zdata, c=zdata, cmap='Greens');

 

 

eg:17

x = np.linspace(-6, 6, 30)

y = np.linspace(-6, 6, 30)

X, Y = np.meshgrid(x, y)

Z=np.sin(np.sqrt(X ** 2 + Y ** 2))

fig = plt.figure()

ax = plt.axes(projection='3d')

ax.contour3D(X, Y, Z, 50, cmap='binary')

ax.set_xlabel('x')

ax.set_ylabel('y')

ax.set_zlabel('z');

 

ax = plt.axes(projection='3d')

ax.plot_wireframe(X, Y, Z, color='black')        #线框图

 

ax = plt.axes(projection='3d')

ax.plot_surface(X, Y, Z, rstride=1, cstride=1,cmap='viridis', edgecolor='none')    #曲面图

ax.set_title('surface');

你可能感兴趣的:(matplotlib绘图)