Matplotlib学习一

Matplotlib学习一

学习莫烦python的读书笔记

plot线

# coding:utf-8
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3)
y1 = 2 * x + 1
y2 = x ** 2

# 定义图像窗口
plt.figure(num=3, figsize=(8, 5), )

# 画图
# zorder 给plot在z轴方向排序
l1, = plt.plot(x, y1, label='linear line', linewidth=10, zorder=1)  # 返回的是list,所以用','
l2, = plt.plot(x, y2, color='red', linewidth=2.0, linestyle='--', label='square line')

# 设置坐标轴范围
plt.xlim((1, 3))
plt.ylim((2, 6))

# 设置坐标轴名称
plt.xlabel('xlable')
plt.ylabel('ylable')

# 设置坐标轴刻度
new_ticks = np.linspace(-5, 5, 10)
plt.xticks(new_ticks)
plt.yticks([-2, -1.8, -1, 1.22, 3], ['$A$', '$B\ B$', 'C', 'D', 'E'])  # $B$:斜体,$B\ B$:斜体中间的空格,即'\ '

# 设置边框
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# 设置x轴的刻度数字或者刻度名称的位置
ax.xaxis.set_ticks_position('bottom')

# 设置x轴的位置到y=0的位置
ax.spines['bottom'].set_position(('data', 0))

# 设置y轴
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))

# 添加图示
# 数据来自于13,14行的label
plt.legend(loc='upper right')

# 修改默认的图示,启用自定义的图示
# 需要plot函数返回的值的第一个,即13,14行的l1,l2
plt.legend(handles=[l1, l2], labels=['up', 'down'], loc='best')  # best: 自动分配最佳位置

# 画一条垂线
x0 = 1
y0 = 2 * x0 + 1
plt.plot([x0, x0], [0, y0], 'k--', linewidth=2.5)  # k 黑色,-- 虚线,

# 画一个点
plt.scatter([x0, ], [y0, ], s=50, color='b')

# 给这个点来个标注
plt.annotate('$2x+1=%s$' % y0, xy=(x0, y0), xycoords='data',  # 基于数据的值来选择位置
             xytext=(+30, -30),  # 标注与被标注点的位置范围
             textcoords='offset points', fontsize=16,
             arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=0.5'))

# 添加注释
plt.text(-3.7, 3, r'$this\ is\ the\ text.\ \mu\ \sigma_i\ \alpha_t$',
         fontdict={'size': 16, 'color': 'g'})

# 刻度的能见度
for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(10)  # 这里指的是刻度数字或者刻度文字的字体大小,不是x、y轴的名字
    label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.7, zorder=2))

# 显示图像
plt.show()

这里写图片描述

Scatter散点图

# coding:utf-8
import numpy as np
import matplotlib.pyplot as plt

n = 1024
X = np.random.normal(0, 1, n)
Y = np.random.normal(0, 1, n)
T = np.arctan2(Y, X)  # 颜色序列

# 散点图
# s size
# c color
plt.scatter(X, Y, s=75, c=T, alpha=0.5)

plt.xlim(-2, 2)
plt.xticks(())  # 空刻度
plt.ylim(-2, 2)
plt.yticks(())  # 空刻度

plt.show()

这里写图片描述

Bar柱状图

# coding:utf-8
import numpy as np
import matplotlib.pyplot as plt

n = 12
X = np.arange(12)
Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 1, n)
Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1, n)

plt.bar(X, +Y1, facecolor='#FF69B4', edgecolor='white')
plt.bar(X, -Y2, facecolor='#20B2AA', edgecolor='white')

plt.xlim(-1, n)
plt.xticks(())
plt.ylim(-1.25, 1.25)
plt.yticks(())

for x,y in zip(X, Y1):
    plt.text(x, y+0.05, '%.2f' % y, ha='center', va='bottom')  # 线在下边
for x, y in zip(X, Y2):
    plt.text(x, -y-0.05, '%.2f' % y, ha='center', va='top')  # 线在上边

plt.show()

这里写图片描述

猜你喜欢

转载自blog.csdn.net/cluster1893/article/details/80327305