简单的数据可视化---绘制散点图

使用scatter绘制散点图并设置其样式

绘制单个点

要绘制单个点,可以使用函数scatter(),并向它传递一对x和y坐标,它将在指定位置绘制一个点:

import matplotlib.pyplot as plt
plt.scatter(2,4)
plt.show()

下面来设置输出的样式,使其更加的有趣:添加标题,给轴加上标签,并确保所有文本都能看清:

import matplotlib.pyplot as plt
plt.scatter(2,4, s=200)

# 设置图表标题并给坐标轴加上标签
plt.title('Square Numbers', fontsize=24)
plt.xlabel('Value', fontsize=24)
plt.ylabel('Square of Value', fontsize=24)

# 设置刻度标记大小
plt.tick_params(axis='both', which='major', labelsize=24)

plt.show()

我们调用了scatter(),并使用s设置了绘制图形时使用的点的尺寸。在此时运行代码,将看到如下图表:

简单的数据可视化---绘制散点图

使用scatter绘制一系列点

要绘制一系列的点,可向scatter()传递两个分别包含x值和y值的列表,如下:

import matplotlib.pyplot as plt

x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]
plt.scatter(x_values, y_values, s=100)

# 设置图表标题并给坐标轴加上标签
plt.title('Square Numbers', fontsize=24)
plt.xlabel('Value', fontsize=24)
plt.ylabel('Square of Value', fontsize=24)

# 设置刻度标记大小
plt.tick_params(axis='both', which='major', labelsize=24)

plt.show()

列表x_values包含要计算其平方根的值,列表y_values包含前述每个数字的平方值,将这些值传入scatter(),matplotlib依次从每个列表中读取一个值来绘制一个点,最终结果如下图所示:
简单的数据可视化---绘制散点图

自动计算数据

手工计算列表要包含的数据可能效率低下,需要绘制的点很多时尤其如此。可以不必手工计算包含坐标的列表,而让python循环来代替我们完成这种计算。下面绘制1000个点代码:

import matplotlib.pyplot as plt

x_values = list(range(1, 1001))
y_values = [x**2 for x in x_values]

plt.scatter(x_values, y_values, s=40)  # 设置颜色。线条粗细。x轴,y轴的值

plt.title('Square Numbers', fontsize=24)
plt.xlabel('Value', fontsize=24)
plt.ylabel('Square of Value', fontsize=24)

plt.tick_params(axis='both', which='major', labelsize=24)

# 设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])

plt.show()

我们首先创建了一个包含x值的列表,其中包含数字1~1000.接下来是一个生成y值的列表,它遍历x值,计算其平方值,并将结果存储到列表y_values中,然后,将输入列表和输出列表传递给scatter()。
由于数据集较大,我们将点设置的比较小,并使用函数axis()指定了每个坐标轴的取值范围,函数axis()要求提供四个值,x和y坐标轴的最小值和最大值。在这里,我们将x轴取值范围设置为0-1100,y轴设置为0-1100000。结果如下图所示:
简单的数据可视化---绘制散点图

要修改数据点的颜色,可以向scatter()传递参数,并将其设置为要使用的颜色的名称,如下:

plt.scatter(x_values, y_values, c='Blue', cmap=plt.cm.Reds, edgecolors='none', s=40)

还可以使用RGB颜色模式进行自定义颜色。要指定自定义颜色,可传递参数,将其设置为一个元组,其中包含0-1之间的小数值,它们分别代表红色、绿色和蓝色分量。例如下面代码行创建一个由淡蓝色组成的散点图:

plt.scatter(x_values, y_values, c=(0, 0, 0.8), cmap=plt.cm.Reds, edgecolors='none', s=40)

值越接近0,指定的颜色越深,值越接近1,指定的颜色越浅。

使用颜色映射

颜色映射是一系列颜色,它们从起始颜色一直渐变到结束颜色。在可视化中,颜色映射用于突出数据的规律,例如,你可以用颜色浅来显示较小的值,并使用较深的颜色显示较大的值。下面演示了如何根据每个点的y值来设置其颜色。

import matplotlib.pyplot as plt

x_values = list(range(1, 1001))
y_values = [x**2 for x in x_values]

plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Reds, edgecolors='none', s=40)  # 设置颜色。线条粗细。x轴,y轴的值

plt.title('Square Numbers', fontsize=24)
plt.xlabel('Value', fontsize=24)
plt.ylabel('Square of Value', fontsize=24)

plt.tick_params(axis='both', which='major', labelsize=24)

# 设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])

plt.show()

我们将参数c设置成了一个y值列表,并使用参数cmap告诉pyplot使用哪个颜色映射。这些代码将y值较小的显示为浅红色,y值较大的深红色,生成图形如下图所示:
简单的数据可视化---绘制散点图

自动保存图表

要让程序自动保存图表到文件中,可以将plt.show()的调用换成plt.savefig()的调用

plt.savefig('squares_plot.png', bbox_inches='tight')

第一个参数指定要以什么样的文件名保存参数,这个文件将存储到当前代码所在的目录下,第二个参数指定将图表多余的空白区域裁剪掉。如果要保留图表周围多余的空白区域,可以省略这个参数。

上一篇:echarts图表X轴文字过长解决解决方案:根据文字长度自动旋转


下一篇:matlab 图像保存时去除白边