Python 数据可视化:多样化的图像

2020-11-26  本文已影响0人  you的日常

在上一课,已经了解了基本的绘图方法,特别是熟悉了如何对坐标系做各种各样的设置,那是可视化的基础。本课要在上一课内容的基础上,进一步丰富坐标系内图像的设置。

注意,没有使用曲线这个词,显然包括但不限于曲线。

1.4.1 标注

如果在坐标系中绘制了多条曲线,会用图例表示出每条曲线的含义,这是一种区分方式;另外一种方式是直接对每条曲线进行标注,或许这样更直接明了。此外,有时候对于坐标系中某些特殊点也会进行标注。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10, 0.005)
y = np.exp(-x/2) * np.sin(2*np.pi*x)

fig, ax = plt.subplots()
ax.plot(x, y)

ax.set_xlim(0, 10)
ax.set_ylim(-1, 1)

ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position('zero')

#以下标注
x1 = 1.25
y1 = np.exp(-x1/2) * np.sin(2*np.pi*x1)
ax.scatter([x1,], [y1,], 50, color='blue')    #①
ax.plot([x1, x1], [0, y1], color='blue', linewidth=2.5, linestyle="--")    #②
ax.plot([0, x1], [y1, y1], color='blue', linewidth=2.5, linestyle='--')    #③

ax.annotate(r'$e^{-\frac{x}{2}}sin(2\pi{x}), x=1.25$',     
             xy=(x1, y1), xycoords='data',  
             xytext=(+30, +0.6), textcoords='offset points', fontsize=16,
             arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))    #④

输出结果:

image

先看输出的结果,相比以往绘制的类似图,此处做了两处改变,一处是坐标系,现在把 x 轴设置到了 y=0 的位置,这种设置方法的解释请参考上一课的内容;另外一处是增加了标注,即图中看到的,除了曲线和坐标轴之外,都属于标注的部分。这些内容是通过代码中写有注释的那一行以下的代码实现的,一共4行,下面逐一进行解释。

① 的目的在于呈现图中的坐标点,即那个蓝色的圆点。scatter 是实现散点图的方法(函数),后面会对此进行详细讲解。请注意这里的参数 [x1,], [y1,]。如果用数学方式表示,应该画出的点是 (x1, y1),这是一个坐标点。scatter 方法的参数跟以前学习过的 plot 一样,都要输入表示横轴的数据集和表示纵轴的数据集,那么,就要把 x1 和 y1 分别放到两个序列中,于是就有了参数 [x1,], [y1,]。

② 和 ③ 的作用就从坐标点 (x1, y1) 分别向 x 轴、y 轴画出垂直的虚线。

④ 是标注文字说明,此处使用 ax.annotate 方法,也可以用 plt.annotate 函数。

在坐标系内能够绘制的图像,除了曲线之外,还有很多其他类型的图像,如散点图。

1.4.2 散点图

散点图很重要,是因为在科学研究中,特别是规律探索的过程中,散点图是一种常用的图像。通常发现科学规律的过程是这样进行的:

当然,上面的过程是以得到一个函数为例说明,有时候画出散点图,或许也不是为了得到某一个函数。

上一篇 下一篇

猜你喜欢

热点阅读