数据可视化<第二天>
5.使用scatter()绘制一系列点
要绘制一系列点,可向scatter()传递两个分别包含x值和y值的列表
如下:
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['STFangsong']
x_values = [1,2,3,4,5]
y_values = [1,4,9,16,25]
plt.scatter(x_values,y_values,s=100)
#设置图表标题,并给坐标轴加上标签
plt.title('示例折线图',fontsize=24)
plt.xlabel('value',fontsize=14)
plt.ylabel('square of value',fontsize=14)
plt.show()
列表x_values包含要计算其平方和的数字
而列表y_values包含前述每个数字的平方值
将这些列表传递给scatter()时
matplotlib依次从每个列表中读取一个值来绘制一个点
要绘制的坐标分别为(1,1),(2,4),(3,9),(4,16),(5,25)
最终结果如图所示:
6,自动计算数据
手工计算列表要包含的值可能效率低下,需要绘制的点很多时尤其如此
可以不必手工计算包含点坐标的列表,而让python循环来替我们完成这种计算
下面是绘制1000个点的代码:
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['STFangsong']
x_values = list(range(1,1001))
y_values = [x**2 for x in x_values]
plt.scatter(x_values,y_values,s=10)
#设置图表标题,并给坐标轴加上标签
plt.title('示例折线图',fontsize=24)
plt.xlabel('value',fontsize=14)
plt.ylabel('square of value',fontsize=14)
#设置每个坐标轴的取值范围
plt.axis([0,1100,0,1100000])
plt.show()
我们首先创建了一个包含x值的列表,其中包含数字1~1000
接下来是一个生成y值的列表解析,它遍历x值(for x in x_values)
计算平方值(x**2),并将结果存储到列表y_values中
然后,将输入列表和输出列表传递给scatter()
由于这个数据集较大,我们将点设置的较小
并使用函数axis()指定了每个坐标轴的取值范围
axis()函数要求提供四个值:x和y坐标轴的最小值和最大值
如图:
7.删除数据点的轮廓
matplotlib允许给散点图中的每一个点指定颜色
要删除数据点的轮廓可在调用scatter()时传递实参edgecolors='none'
plt.scatter(x_values,y_values,edgecolors='none',s=10)
修改后如图:
8.自定义颜色
要修改数据点的颜色,可向scatter()传递参数c
并将其设置为要使用的颜色的名称,如下所示:
plt.scatter(x_values,y_values,c='red',edgecolors='none',s=10)
还可以使用RGB颜色模式自定义颜色,要指定自定义颜色,可传递参数c
并将其设置为一个元组,其中包含三个0~1之间的小数值
它们分别表示红色,绿色和蓝色分量,例如
下面的代码行创建一个由淡蓝色点组成的散点图:
plt.scatter(x_values,y_values,c=(0,0,0.8),edgecolors='none',s=10)
值越接近0,指定颜色越深,值越接近1,指定颜色越浅
9.使用颜色映射
颜色映射是一系列颜色,它们从起始颜色渐变到结束颜色
在可视化中,颜色映射用于突出数据规律
例如,你可能用较浅的颜色来显示较小的值,并使用较深的颜色来显示较大的值
模块pyplot内置了一组颜色映射,要使用这些颜色映射
你需要告诉pyplot该如何设置数据集中的每个点的颜色
下面演示了如何根据每个点的y值来设置其颜色:
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['STFangsong']
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.Blues,edgecolor='none',s=10)
#设置图表标题,并给坐标轴加上标签
plt.title('示例折线图',fontsize=24)
plt.xlabel('value',fontsize=14)
plt.ylabel('square of value',fontsize=14)
#设置每个坐标轴的取值范围
plt.axis([0,1100,0,1100000])
plt.show()
我们将参数c设置成了一个y值列表
并使用参数cmap告诉pyplot使用哪个颜色映射
这些代码将y值较小的点显示为浅蓝色,并将y值较大的点显示为深蓝色
如图:
10.自动保存图表
要让程序将图表保存到文件中,可将对plt.show()的调用替换为
对plt.savefig()的调用:
plt.savefig('1.png',bbox_inches='tight')
第一个实参指定要以什么样的文件名保存图表
将这个文件存放到当前.py文件所在目录中
第二个实参指定将图表多余的空白区域裁剪掉
如果要保留图表周围多余的空白区域,可以省略这个实参
注意一点,
plt.show()
一定要放在plt.savefig()
后面否则存储下来的是空白图