在Python的數(shù)據(jù)可視化庫中,采用matplotlib繪制相關(guān)圖形時,若不加任何設(shè)定,一般的x-y坐標軸是不帶箭頭且是一個封閉的矩形。我們以Sigmoid函數(shù)的繪制,給大家展示一下。
import matplotlib.pyplot as plt #導入matplotlib庫
import numpy as np #導入numpy庫
#生成x步長為0.1的列表數(shù)據(jù)
x = np.arange(-15,15,0.1)
#生成sigmiod形式的y數(shù)據(jù)
y=1/(1+np.exp(-x))
#設(shè)置x、y坐標軸的范圍
plt.xlim(-12,12)
plt.ylim(-1, 1)
#繪制圖形
plt.plot(x,y, c='b')
得到的圖形為:
原始圖形.jpg
matplotlib的輔助工具,包含一系列對坐標軸設(shè)置的框架。其中的axisartist包就用來設(shè)置坐標軸的類型。
1.創(chuàng)建畫布并引入axisartist工具。
import mpl_toolkits.axisartist as axisartist
#創(chuàng)建畫布
fig = plt.figure(figsize=(8, 8))
#使用axisartist.Subplot方法創(chuàng)建一個繪圖區(qū)對象ax
ax = axisartist.Subplot(fig, 111)
#將繪圖區(qū)對象添加到畫布中
fig.add_axes(ax)
2.繪制帶箭頭的x-y坐標軸
#通過set_visible方法設(shè)置繪圖區(qū)所有坐標軸隱藏
ax.axis[:].set_visible(False)
#ax.new_floating_axis代表添加新的坐標軸
ax.axis["x"] = ax.new_floating_axis(0,0)
#給x坐標軸加上箭頭
ax.axis["x"].set_axisline_style("->", size = 1.0)
#添加y坐標軸,且加上箭頭
ax.axis["y"] = ax.new_floating_axis(1,0)
ax.axis["y"].set_axisline_style("-|>", size = 1.0)
#設(shè)置x、y軸上刻度顯示方向
ax.axis["x"].set_axis_direction("top")
ax.axis["y"].set_axis_direction("right")
我們先把原始的如上圖的所有坐標軸隱藏,即長方形的四個邊。
然后用ax.new_floating_axis在繪圖區(qū)添加坐標軸x、y,這里的ax.new_floating_axis(0,0),第一個0代表平行直線,第二個0代表該直線經(jīng)過0點。同樣,ax.axis["y"] = ax.new_floating_axis(1,0),則代表豎直曲線且經(jīng)過0點。
再次,x.axis["x"].set_axisline_style("->", size = 1.0)表示給x軸加上箭頭,"->"表示是空箭頭,size = 1.0表示箭頭大小。ax.axis["y"].set_axisline_style("-|>", size = 1.0)中"-|>"則是實心箭頭。
最后,設(shè)置x、y軸上刻度顯示方向,對于x軸是刻度標簽在上面還是下面,y軸則是刻度標簽在左邊還是右邊。
3.在帶箭頭的x-y坐標軸背景下,繪制函數(shù)圖像
#生成x步長為0.1的列表數(shù)據(jù)
x = np.arange(-15,15,0.1)
#生成sigmiod形式的y數(shù)據(jù)
y=1/(1+np.exp(-x))
#設(shè)置x、y坐標軸的范圍
plt.xlim(-12,12)
plt.ylim(-1, 1)
#繪制圖形
plt.plot(x,y, c='b')
將Sigmiod曲線添加到畫布中,得到結(jié)果:
帶箭頭坐標軸.jpg
tist坐標軸工具——將原始坐標軸均隱藏掉——添加新的基于原點的x與y軸——為新坐標軸加入箭頭,并設(shè)置刻度顯示方式——加入圖形。