Python |
您所在的位置:网站首页 › 如何在柱状图上方添加趋势线条 › Python |
Python-Matplotlib可视化(4)——添加注释让统计图通俗易懂
前言添加标题为坐标轴添加标签添加文本说明文本的对齐方式文本边界框
添加箭头添加图例使用LaTex风格的符号LaTex简介使用LaTex符号示例
使用中文字符系列链接
前言
在系列博文的中,我们已经学习了如何自定义绘图的颜色和样式,以使得绘制更加精美、符合审美要求。可以用Matplotlib绘制出复杂而又精美的统计图,但是如果没有注释,我们很难让其他人明白图中的点、线究竟代表着什么,有什么样的含义,也就失去了统计图的意义,为了解决这一问题,Matplotlib提供了大量对图形进行注释的方法,这些注释方法对于所有的绘图函数(如plt.plot()、plt.scatter()、plt.histogram()等)都是通用的,利用这些注释可以使统计图变得通俗易懂。 添加标题从最简单的添加标题开始: import numpy as np import matplotlib.pyplot as plt x = np.linspace(-4, 4, 10005) y = 5 * (x + 4.2) * (x + 4.) * (x - 2.5) plt.title('A polynomial') plt.plot(x, y, c = 'm') plt.show()
在实际应用中,对统计图坐标轴的适当描述有助于用户理解图形所表达的含义。 import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 8, 1000) y = 2.0 * x + 0.5 * 5 * x ** 2 plt.title('Acceleration Moving') plt.xlabel('Time') plt.ylabel('distance') plt.plot(x, y, c = 'c') plt.show()
虽然我们已经学习了如何图形添加标题,以及为坐标轴添加注释,但是,很多时候我们还需要在图形中添加说明文本,来凸显图中点或线的重要性。 import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 8, 1000) y = 2.0 * x + 0.5 * 5 * x ** 2 plt.title('Acceleration Moving') plt.xlabel('Time') plt.ylabel('distance') plt.scatter(x[0],y[0]) plt.text(x[0], y[0], 'start') plt.plot(x, y, c = 'c') plt.show()
文本外围包含隐式文本框(下文会介绍文本框的显示方法),此框用于将文本与传递给plt.text()的坐标进行相对对齐。使用verticalalignment和horizontalalignment参数(它们分别可以简写为va和ha)控制对齐的方式。 垂直对齐选项如下所示: 参数值说明center参数坐标相对于文本框的中心top参数坐标相对于文本框的上侧bottom参数坐标相对于文本框的底部baseline参数坐标相对于文本的基线 import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 8, 1000) y = 2.0 * x + 0.5 * 5 * x ** 2 x_b = np.linspace(0, 8, 1000) y_b = np.zeros_like(x_b) plt.title('Acceleration Moving') plt.xlabel('Time') plt.ylabel('distance') plt.scatter(x[0],y[0]) plt.text(0, 0, 'center', va='center') plt.text(2, 0, 'top', va='top') plt.text(4, 0, 'bottom', va='bottom') plt.text(6, 0, 'baseline', va='baseline') plt.plot(x, y, c = 'c') plt.plot(x_b, y_b, c = 'm') plt.show()水平对齐选项如下所示: 参数值说明center参数坐标相对于文本框的中心left参数坐标相对于文本框的左侧right参数坐标相对于文本框的右侧 import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 8, 1000) y = 2.0 * x + 0.5 * 5 * x ** 2 y_b = np.linspace(0, 100, 1000) x_b = np.zeros_like(y_b) plt.title('Acceleration Moving') plt.xlabel('Time') plt.ylabel('distance') plt.scatter(x[0],y[0]) plt.text(0, 0, 'center', ha='center') plt.text(0, 50, 'left', ha='left') plt.text(0, 100, 'right', ha='right') plt.plot(x, y, c = 'c') plt.plot(x_b, y_b, c = 'm') plt.show()上文介绍了文本外围包含隐式文本框,为了可以显式的绘制文本框,plt.plot()支持一个以字典为输入的bbox参数,此词典用于定义文本框的外观配置: import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 8, 1000) y = 2.0 * x + 0.5 * 5 * x ** 2 box = { 'facecolor': '.75', 'edgecolor': 'r', 'boxstyle': 'round' } plt.title('Acceleration Moving') plt.text(0, 8, 'start', bbox=box) plt.plot(x, y, c = 'c') plt.show()
添加文本框当然可以帮助注释图形,但有时当说明文本过多,并不能清楚的说明究竟与图形的那一部分相对应,因此要说明图形中的特定部分,没有什么比使用箭头更好的了,Matplotlib使用plt.annotate()函数绘制箭头。 import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 8, 1000) y = 2.0 * x + 0.5 * 5 * x ** 2 plt.annotate('start', ha = 'center', va = 'bottom', xytext = (2, 30.), xy = (0, 0), arrowprops = { 'facecolor' : 'black', 'shrink' : 0.05 }) plt.title('Acceleration Moving') plt.plot(x, y, c = 'c') plt.show()
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |