Matplotlib学习笔记(三)散点图&柱状图&等高线图


前言

  三种图的简单绘制介绍


一、散点图

代码如下:

import matplotlib.pyplot as plt
import numpy as np
n = 1024

# np.random.normal()函数 正态分布函数
X = np.random.normal(0, 1, n) # X值,均值是0,标准差是1
Y = np. random.normal(0, 1, n) # Y值

# np.arctan2()函数 按照元素(Y,X)所在象限返回X/Y的反正切值。
# 用作颜色
T = np.arctan2(Y, X) 

plt.scatter(X, Y, s = 75, c = T, alpha = 0.5) # x,y,大小,颜色,透明度


plt.xlim((-1.5, 1.5))
plt.ylim((-1.5, 1.5))
plt.xticks(()) # 隐藏x坐标轴
plt.yticks(()) # 隐藏y坐标轴

plt.show()

结果显示:
在这里插入图片描述

二、柱状图

代码如下:

import matplotlib.pyplot as plt
import numpy as np
n = 12
X = np.arange(n)
# np.random.uniform(0.5, 1.0, n) 在均匀分布[0.5, 1.0)中随机采样 n个数 
# 即产生n个[0.5, 1.0)之间的数
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")

# z1 = list(zip(X, Y1)) 将X和Y1打包成一个列表
for x, y in zip(X, Y1):
    # ha='center':横向居中对齐,va='bottom':纵向顶部、底部对齐
    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.xlim(-.5, n)
plt.xticks(())
plt.ylim(-1.25, 1.25)
plt.yticks(())

plt.show()

结果显示:
在这里插入图片描述

三、等高线图

代码如下:

import matplotlib.pyplot as plt
import numpy as np
# 定义高度函数 根据x,y生成对应的高度
def f(x, y):
    return (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)
n = 256
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)

# 用meshgrid在二维平面中将每一个x和每一个y分别对应起来,编织成栅格
X, Y = np.meshgrid(x, y)

# plt.contourf()函数 填充等高线内的颜色
# 位置参数分别为:X, Y, f(X,Y) 透明度0.75,并将 #f(X,Y) 的值对应到color map的暖色组中寻找对应颜色
# 8代表等高线的密集程度,这里被分为10个部分。如果是0,则图像被一分为二。
plt.contourf(X, Y, f(X, Y), 8, alpha = 0.75, cmap = plt.cm.hot)

# plt.courtour()函数 画等高线
# 位置参数为:X, Y, f(X,Y)。颜色选黑色,线条宽度选0.5
# 使用linewidth的线会更粗
C = plt.contour(X, Y, f(X,Y), 8, colors = "black", linewidths = 0.5) 

# plt.clabel()函数 加等高线的标识
# inline为False线会穿过数字标识
plt.clabel(C, inline = True, fontsize = 10)

# 并将坐标刻度轴隐藏
plt.xticks(())
plt.yticks(())
plt.show()

结果显示:
在这里插入图片描述