目录

1.matplotlib绘图

①基本用法

绘单个函数图

画布figure图

②画图

(1)散点图

(2)折线图

(3)bar柱状图

(4)image热图

(5)饼图

(6)箱线图

1.matplotlib绘图

①基本用法

绘单个函数图

x = np.linspace(-1, 1, 50)
y = 2 * x + 1
plt.plot(x, y)
plt.show()

画布figure图

将两个函数绘制在一张画布上

x = np.linspace(-1, 1, 50)
y1 = 2 * x + 1
y2 = x**2
# figsize是画布尺寸,facecolor是背景颜色,num为图形编号或者名称
plt.figure(num=3,figsize=(2,3),facecolor='green')
plt.plot(x, y1)
plt.plot(x,y2,color='red',linewidth=3,linestyle='--')
plt.show()

 

划分子图

 # 划分子图 这里是划分成2*2的子图 第三个参数为子图的编号
    plt.subplot(221)
    plt.title("1")  # 子图1的标题
    plt.subplot(222)
    plt.title("2")   # 子图1的标题
    plt.subplot(223)
    plt.plot(x, y1)
    plt.title("3")   # 子图1的标题
    plt.subplot(224)
    plt.title("4")   # 子图1的标题
    plt.plot(x, y2, color='red', linewidth=3, linestyle='--')
    plt.suptitle("5")   # 全局标题
    plt.show()

 

直角坐标系

# 设置坐标轴
plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel('I am X')
plt.ylabel('I am Y')
new_ticks = np.linspace(-1, 2, 5)
plt.xticks(new_ticks)
plt.yticks([-2, -1.8, -1, 1.22, 3],
           [r'$really\ bad$', r'$bad$', r'$normal\ \alpha$', r'$good$', r'$really\ good$'])
# 画直角坐标系
ax=plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))

 

画标签图

# 画标签图
l1, = plt.plot(x, y1, label='up')
l2, = plt.plot(x, y2, color='red', linewidth=1, linestyle='--', label='down')
plt.legend(handles=[l1, l2, ], labels=['aaa', 'bbb'], loc='best')  # loc: lower right, upper left, etc.

 

标记一个点

# 标一个点出来
x0 = 1
y0 = 2 * x0 + 1
plt.scatter(x0, y0, s=50, color='b')
plt.plot([x0, x0], [0, y0], 'k--', linewidth=2.5)
plt.annotate(r'$2x+1=%s$' % y0, xy=(x0, y0), xycoords='data', xytext=(+30, -30),
             textcoords='offset points', fontsize=16,
             arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))
plt.text(-3.7, 3, r'$This\ is\ the\ some\ text. \mu\ \sigma_i\ \alpha_t$',
         fontdict={'size': 16, 'color': 'r'})

 

②画图

(1)散点图

def scatter():
    n = 1024  # data size
    # 标准正态分布
    X = np.random.normal(0, 1, n)  # 每一个点的X值
    Y = np.random.normal(0, 1, n)  # 每一个点的Y值
    T = np.arctan2(Y, X)  # for color value
    plt.scatter(X, Y, s=75, c=T, alpha=0.5)
​
    plt.xlim(-1.5, 1.5)
    plt.xticks(())  # ignore xticks
    plt.ylim(-1.5, 1.5)
    plt.yticks(())  # ignore yticks
​
    plt.show()

 

n = 1024  # data size
# 标准正态分布
X1 = np.random.normal(0, 1, n)  # 每一个点的X值
Y1 = np.random.normal(0, 1, n)  # 每一个点的Y值
plt.scatter(X1, Y1, s=75, c='blue',marker='*',label='正态分布')
​
# 均匀分布
X2 = np.random.uniform(-4, 4, (1,n))  # 每一个点的X值
Y2 = np.random.uniform(-4, 4, (1,n))  # 每一个点的Y值
plt.scatter(X2, Y2, s=75, c='yellow',marker='o',label='均匀分布')
​
plt.legend(loc='best')
​
plt.xlim(-4, 4)
plt.ylim(-4, 4)
plt.xlabel('x')
plt.ylabel('y')
​
​
plt.show()

 

(2)折线图

def zhexian():
    n=24
    y1=np.random.randint(27,37,n)
    y2=np.random.randint(40,60,n)
    plt.plot(y1,label='温度')
    plt.plot(y2,label='湿度')
    plt.xlim(0,23)
    plt.ylim(20,70)
    plt.xlabel('小时',fontsize=12)
    plt.ylabel('测量值',fontsize=12)
    plt.title('24小时温度湿度统计',fontsize=16)
    plt.legend()
    plt.show()

 

(3)bar柱状图

def bar():
    n = 12
    X = np.arange(n)
    Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)
    Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)
    # 柱状图是竖着的
    plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
    plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
    # 横着的柱状图
    plt.barh(x,+Y1)
​
    for x, y in zip(X, Y1):
        # ha: horizontal alignment
        # va: vertical alignment
        plt.text(x, y + 0.05, '%.2f' % y, ha='center', va='bottom')
​
    for x, y in zip(X, Y2):
        # ha: horizontal alignment
        # va: vertical alignment
        plt.text(x, -y - 0.05, '%.2f' % y, ha='center', va='top')
​
    plt.xlim(-0.5, n)
    plt.xticks(())
    plt.ylim(-1.25, 1.25)
    plt.yticks(())
​
    plt.show()

 

(4)image热图

def image():
    a = np.array([0.313660827978, 0.365348418405, 0.423733120134,
                  0.365348418405, 0.439599930621, 0.525083754405,
                  0.423733120134, 0.525083754405, 0.651536351379]).reshape(3, 3)
    plt.imshow(a, interpolation='nearest', cmap='bone', origin='upper')
    plt.colorbar(shrink=0.92)
    plt.xticks(())
    plt.yticks(())
    plt.show()

 

(5)饼图

def pie():
    data=[2,5,8,13,7]
    plt.pie(data,
            labels=['apples','banane','gredd','egg','compt'],
            autopct='%1.1f%%')
    plt.title('pie of data')
    plt.show()

 

(6)箱线图

箱线图一般用来展现数据的分布(如上下四分位值、中位数等),同时也可以用箱线图反映数据的异常情况

def box():
    plt.boxplot([height,weight,old,grade],patch_artist=True,vert=True)
    plt.show()

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐