七月 30

matplotlib教程:图例

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 11, 1)

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(x, x*2, label='Normal')
ax.plot(x, x*3, label='Fast')
ax.plot(x, x*4, label='Faster')

# loc 位置。具体数值为一个数字,数字对应的位置可在官方文档查到
# ncol 列数,默认为1
# 上面的label也可以列表形式传给legend方法的labels参数

ax.legend(loc=0, ncol=3)

plt.show()
七月 30

matplotlib教程:网格

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10, 1)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, x*x)

# True 表示显示网格。网格默认隐藏。但是设置了下面的属性后网格会默认显示
# color 网格颜色
# linewidth 网格线宽
# linestyle 网格样式
ax.grid(color='r', linewidth=5, linestyle='--')

plt.show()
七月 30

matplotlib教程:多图

import numpy as np
import matplotlib.pyplot as plt

# 多图指的是创建多个figure对象
# 子图指的是在一个figure对象上画多个子图

fig1 = plt.figure()

ax1 = fig1.add_subplot(111)
ax1.plot([1, 2, 3], [3, 2, 1])

fig2 = plt.figure()
ax2 = fig2.add_subplot(111)
ax2.plot([1, 2, 3], [1, 2, 3])

plt.show()
七月 30

matplotlib教程:子图

import numpy as np
import matplotlib.pyplot as plt

# 注意,如果不用面向对象的方法来画图,那么使用的是plt.subplot()。
# 名字有所不同,但是用法和参数是一样的。
# 由于这样画图没有轴的概念,因此在子图上画图用的是plt.plot()的方法。

x = np.arange(1, 100)

# 生成一个图像(figure)。一个图像可以有多个子图。
fig = plt.figure()
# 在生成的图像上添加一个轴(axis),轴是我们在多图中实际作图的区域。
# 参数221是指生成一个2x2的作图区域,然后我们在第一个区域上作图

ax1 = fig.add_subplot(221)
# 在轴上作图和之前利用plt作图是一样的
ax1.plot(x, x)

ax2 = fig.add_subplot(222)
ax2.plot(x, -x)

ax3 = fig.add_subplot(223)
ax3.plot(x, x*x)

ax4 = fig.add_subplot(224)
ax4.plot(x, np.log(x))

plt.show()
七月 29

matplotlib教程:箱型图

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(100)

data = np.random.normal(size=1000, loc=0, scale=1)

# sym 异常值的形状
# whis 表示正常范围的线的长短,默认为1.5
# plt.boxplot(data, sym='.', whis=1.5)

# 画多个箱型图
data2 = np.random.normal(size=(1000, 4), loc=0, scale=1)
labels = ['A', 'B', 'C', 'D']

plt.boxplot(data2, labels=labels)

plt.show()
七月 29

matplotlib教程:饼状图

import matplotlib.pyplot as plt

labels = ['A', 'B', 'C', 'D']
fracs = [15, 30, 45, 20]
explode = [0, 0.1, 0, 0]

# autopct 用格式化的字符串标定所占的百分比
# explode 离开饼图中心的距离
# shadow 阴影
plt.pie(x=fracs, labels=labels, autopct='%.0f%%', explode=explode, shadow=True)

plt.show()
七月 29

matplotlib教程:直方图

import numpy as np
import matplotlib.pyplot as plt

mu = 100
sigma = 20

x = mu + sigma*np.random.randn(2000) + 2
y = mu + sigma+np.random.randn(2000) + 3

# bins 直方图的数量
# color 颜色
# density 是否进行标准化
# edgecolor 边线颜色
# plt.hist(x, bins=10, color='r', density=True, edgecolor='black')

# 二维直方图
plt.hist2d(x, y, bins=100, color='r', density=True, edgecolor='black')

plt.show()
七月 29

matplotlib教程:柱状图

import numpy as np
import matplotlib.pyplot as plt

N = 4
y = [20, 10, 30, 25]

index = np.arange(N)

# color 颜色
# width 柱状图的宽度,默认0.8
# p1 = plt.bar(x=index, height=y, color='g', width=0.5)
# 横向的柱状图
# p2 = plt.barh(y=index, width=y, color='g', height=0.5)

# 一幅图中画多个柱状图
bar_width = 0.3

sales_BJ = [52, 53, 63, 53]
sales_SH = [44, 66, 55, 41]

# # 左右并列的柱状图
# plt.bar(index-0.5*bar_width, sales_BJ, bar_width, color='b')
# plt.bar(index+0.5*bar_width, sales_SH, bar_width, color='r')

# 上下层叠的柱状图
plt.bar(x=index, height=sales_BJ, width=bar_width, color='b')
plt.bar(x=index, bottom=sales_BJ, height=sales_SH, width=bar_width, color='r')

plt.show()
七月 29

matplotlib教程:折线图

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-10, 10, 5)
y = x**2

# 可选参数[fmt] 是一个字符串来定义图的基本属性如:颜色(color),点型(marker),线型(linestyle)
# 具体形式  fmt = '[color][marker][line]',例如 plot(x, y, 'bo-')  表示 蓝色圆点实线
# 如果不能使用fmt格式来设置,可以单独设置:
# color='green'
# marker='o'
# linestyle='dashed'
# linewidth=1
# markersize=6
plt.plot(x, y, color='green', marker='o', linestyle='dashed', linewidth=1, markersize=10)

plt.show()
七月 29

matplotlib教程:散点图

import matplotlib.pyplot as plt

height = [161, 170, 182, 175, 173, 165]
weight = [50, 58, 80, 70, 69, 55]

# s=20 设置大小,设置的设置的是面积,而不是直径
# c='b' 设置颜色
# marker='o' 设置点的形状
# alpha=1 透明度
plt.scatter(height, weight, s=100, c='r', marker='<', alpha=0.5)

plt.show()