【Tensorflow】辅助工具篇——matplotlib介绍(上)

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/mao_xiao_feng/article/details/73430942

期待已久的一章!数据可视化,数据图表分析,paper画图神器,matplotlib登场了

因为有太多可讲,我们分成几篇来详细介绍,如果你想发paper,学好这个,如果你要做工程,那更要学好这个,总的来说,可视化图表绘制工具是必须要熟练使用的。

有人可能会说Tensorflow不是有tensorboard来训练可视化吗?tensorboard所记录的数据的数据对于我们分析是远远不够的,很多指标用tensorboard难以记录下来。

下载matplotlib:

sudo pip install matplotlib

matplotlib中的pyplot提供了类似于Matlab画图的接口,可用于简单的绘制,一般基本的绘图pyplot就可以满足所有要求。导入matplotlib:
import matplotlib.pyplot as plt

一.基本绘图

首先介绍一下基本绘图plt.plot

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

plt.plot(x, np.sin(x), linestyle='-', color='red')
plt.plot(x, np.cos(x), linestyle='--', color='green')
plt.show()

用numpy生成一组值,然后用plot函数绘制sin和cos函数,后面可以接各种参数,举个例子‘-’表示实线,‘--’表示虚线,color代表不同颜色,非常形象。



用savefig来保存图表,plt.figure产生一张图的实例。后面再在图上绘制。但是有一点要注意,先show再保存是会报错的。

fig = plt.figure()
x = np.linspace(0, 10, 100)
plt.plot(x, np.sin(x), '-')
plt.plot(x, np.cos(x), '--')
#plt.show() 先show再保存会报错
fig.savefig('my_figure.png')
plt.show()

用subplot来产生子图,子图都是在一个figure里面

plt.figure()  # create a plot figure

# 产生两个子图,绘制第一个
plt.subplot(2, 1, 1) # (行, 列, 第几个子图)
plt.plot(x, np.sin(x))

# 绘制第二个
plt.subplot(2, 1, 2)
plt.plot(x, np.cos(x))

还可以采用如下方式:

# 产生figure和子图,分别传到两个变量中
fig, ax = plt.subplots(2)

# 分别根据索引来绘制
ax[0].plot(x, np.sin(x))
ax[1].plot(x, np.cos(x))


除此之外,我们还可以调整坐标轴的范围。

plt.plot(x, np.sin(x))
plt.xlim(-1, 11)
plt.ylim(-1.5, 1.5)
#或者
#plt.plot(x, np.sin(x))
#plt.axis([-1, 11, -1.5, 1.5])


 
 

在图上可以打一些标记:

plt.plot(x, np.sin(x))
plt.title("A Sine Curve")
plt.xlabel("x")
plt.ylabel("sin(x)")

也可以直接在子图上设置,更加快捷:

ax = plt.axes()
ax.plot(x, np.sin(x))
ax.set(xlim=(0, 10), ylim=(-2, 2),
       xlabel='x', ylabel='sin(x)',
       title='A Simple Plot')


二.点图

点图的绘制也是通过plot函数,只需要将‘-’改成‘.’即可

x = np.linspace(0, 10, 30)
y = np.sin(x)

plt.plot(x, y, '.', color='black')

当然点的样式和形状大小都是可以改变的,我们可以通过参数来控制。

matplotlib用scatter函数绘制散点图,散点图用的比较多,它允许我们绘制不规则的多个点,参数color和size控制颜色和大小,如下:

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)

三.柱状图

matplotlib用hist函数来绘制柱状图,给出一个具体的实例:

plt.hist([1,11,21,31,41], bins=[0,10,20,30,40,50], weights=[10,1,40,33,6])
plt.show()

只有两句话,但是里面的参数需要详细解释一下,bins表示一些间隔,柱状图的绘制其实是一个统计的过程,例如0-10这个区间,落入的数据是几个,那么纵坐标就显示几,weights则表示每个区间的权重。


ok,介绍完了三种图表的绘制,我们其实可以干很多事了,例如散点图可以做低维流形的可视化,而二维柱状图则可以做概率密度的可视化,具体怎么做,到下篇详述。

猜你喜欢

转载自blog.csdn.net/mao_xiao_feng/article/details/73430942