Python 散点图

matplotlib 绘制散点图的函数有 mptplotlib.pyplot.plot()、matplotlib.pyplot.scatter(),多数情况下使用 scatter() 函数。

scatter() 函数主要参数:

plt.scatter(x,y,  # array_like, 数据点在坐标系中的位置
 s=None,  # 标量或array_like, 标记点的大小, 可选参数
 c=None,  # 标记点的颜色,默认值为 'b'
 marker=None,  # 标记样式,默认为 'o'
 cmap=None,  # 颜色映射
 norm=None,  # 
 vmin=None,
 vmax=None,
 alpha=None,  # 透明度, [0, 1] 上的浮点数
 linewidths=None,  # 线宽
 verts=None,
 edgecolors=None,  # 标记的边缘颜色, 默认为 'face',表示边缘颜色与面颜色相同
 hold=None,
 data=None,
 **kwargs)

 

一、用 plot() 绘制散点

示例 1

import numpy as np
import matplotlib.pyplot as plt 

# 生成 1000 个服从标准正态分布的样本 
y = np.random.randn(1000)

# 绘制散点图
plt.plot(x, linestyle='', marker='.');  # 设置为不画线,标记标记点为圆点

plt.plot(x, linestyle='', marker='.')  可以简写为 plt.plot(x, '.')

 plot() 函数默认绘制折线图,如果不是简写方式,只是省略 linestyle (略写为 ls) 参数,

而是写为 plt.plot(x, marker='.'); 则图形如下:

 

 

 2、plot() 在只提供 y 值,不提供 x 值时,默认将 序列或数组 y 索引值当作 x

 所以,示例 1 的完整代码应该是:

import numpy as np
import matplotlib.pyplot as plt 

# 生成 1000 个服从标准正态分布的样本 
y = np.random.randn(1000)
x = [i for i, _ in enumerate(y)]

# 绘制散点图
plt.plot(x, y,  linestyle='', marker='.'); 

对上述代码略作修正,使图表美观一点

import numpy as np
import matplotlib.pyplot as plt 

# 生成 1000 个服从标准正态分布的样本 
y = np.random.randn(1000)
x = [i for i, _ in enumerate(y)]

# 图表元素中正常显示中文字符
plt.rcParams['font.sans-serif'] = 'SimHei'
# 坐标轴刻度标签正常显示负号
plt.rcParams['axes.unicode_minus'] = False

# 绘制散点图
plt.plot(x, y, linestyle='', marker='.')
plt.xticks(size=12, color='grey')  # x 轴刻度标签
plt.yticks(size=12, color='grey')  # y 轴刻度标签
plt.title('散点图', size=14, color='y');  # 添加图表标题

 

二、用 scatter() 绘制散点图

示例2

import numpy as np 
import matplotlib.pyplot as plt


# 在区间 [a, b] 上均匀地取指定数量的值
x = np.linspace(0.05, 10, 1000) np.random.seed(22)
# 生成 1000 个服从标准正态分布的样本 
y = np.random.randn(1000)

plt.scatter(x, y);

  注:标记点默认为圆点,颜色默认为 blue, 边缘颜色默认与标记点的颜色一致。

对示例2 的图形进行美化

import numpy as np
import matplotlib.pyplot as plt

#  在区间 [a, b] 上均匀地取指定数量的值
x = np.linspace(0.05, 10, 1000)  

np.random.seed(22)
y = np.random.randn(1000)

# 图表元素中正常显示中文字符
plt.rcParams['font.sans-serif'] = 'SimHei'
# 坐标轴刻度标签正常显示负号
plt.rcParams['axes.unicode_minus'] = False

plt.scatter(x, y,
            s=87,  # 标记点大小
            marker='*',  # 标记点的样式 星号
            c='g',  # green 绿色
            linewidths=0.41,
            edgecolor='y',  # 边缘颜色
            label='scatter figure')

plt.xticks(size=12, color='grey')  # x 轴刻度标签
plt.yticks(size=12, color='grey')  # y 轴刻度标签
plt.title('散点图', size=14, color='y');  # 添加图表标题
plt.legend()  # 添加图例

# 设置坐标轴刻度范围
plt.xlim(-0.5, 10.5)  
plt.ylim(-3.5, 3.5);

 

 

 

posted @ 2020-01-15 21:03  赏尔  阅读(3053)  评论(0编辑  收藏  举报