美文网首页
Python 数据可视化:多样化的图像

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

作者: you的日常 | 来源:发表于2020-11-26 11:50 被阅读0次

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

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

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 函数。

  • r'e−x2sin(2πx),x=1.25<math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mi>e</mi><mrow class="MJX-TeXAtom-ORD"><mo>−</mo><mfrac><mi>x</mi><mn>2</mn></mfrac></mrow></msup><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>2</mn><mi>π</mi><mrow class="MJX-TeXAtom-ORD"><mi>x</mi></mrow><mo stretchy="false">)</mo><mo>,</mo><mi>x</mi><mo>=</mo><mn>1.25</mn></math>':这是所显示的内容,在 Matplolib 中,支持 LaTex 编辑显示公式。
  • xy=(x1, y1):说明被标注点的坐标。
  • xycoords='data':标注内容指向的点,默认值是 'data',也可以选其他值,更多内容请阅读这里
  • xytext=(+30, +0.6):上述文本内容的显示位置。
  • arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"):箭头的设置。

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

1.4.2 散点图

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

  • 设计实验,通过实验测量得到数据;
  • 将数据在坐标系内做散点图;
  • 观察散点图的特点,推断可能的函数关系,即规律;
  • 再用实验验证规律是否正确,也包括理论上的检验,总之,只要没有发现不符合上述规律的实验数据,就姑且认为该规律是成立的。

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

相关文章

网友评论

      本文标题:Python 数据可视化:多样化的图像

      本文链接:https://www.haomeiwen.com/subject/ebkebktx.html