用matplotlib来作画
matplotlib.pyplot绘制折线图
import matplotlib.pyplot as plt
values = [1,2,3,4,5]
squares = [1,4,9,16,25]
#设定图象的自变量、因变量、线条粗细
plt.plot(values,squares,linewidth=2)
#给图标标题并设置字号
plt.title("A table of squares", fontsize=24)
#给坐标轴加上标签并设置字号
plt.xlabel("value",fontsize=12)
plt.ylabel("square of value",fontsize=12)#
#给横纵坐标设置字号
plt.tick_params(axis='x',labelsize=12)
plt.tick_params(axis='y',labelsize=12)
plt.show()
现在看看代码画出来的折线图
matplotlib.pyplot绘制散点图
上面的例子是把最终的图象一下子给画出来,下面我们一步一步重现整个画图的过程。
我们首先画一个单独的点出来
import matplotlib.pyplot as plt
#在图像上呈现一个单独的点
plt.scatter(2,5)
plt.show()
然后我们还是依照上面的步骤,设置标题,字号等等
import matplotlib.pyplot as plt
#在图像上呈现一个单独的点
plt.scatter(2,5)
#给图标标题并设置字号
plt.title("A table of squares", fontsize=24)
#给坐标轴加上标签并设置字号
plt.xlabel("value",fontsize=12)
plt.ylabel("square of value",fontsize=12)
#给横纵坐标设置字号
plt.tick_params(axis='x',labelsize=12)
plt.tick_params(axis='y',labelsize=12)
plt.show()
画出来的图是这个样子的
同样的,我们可以吧上面的操作对这个孤独的小点重复一遍
顺便玩点花样,这次把点的大小变大,让他看起来没有那么孤独
import matplotlib.pyplot as plt
#在图像上呈现一个单独的点
plt.scatter(2,5,s=2000)
#给图标标题并设置字号
plt.title("A table of squares", fontsize=24)
#给坐标轴加上标签并设置字号
plt.xlabel("value",fontsize=12)
plt.ylabel("square of value",fontsize=12)
#给横纵坐标设置字号
plt.tick_params(axis='x',labelsize=12)
plt.tick_params(axis='y',labelsize=12)
plt.show()
这个点看起来还是太大了,我们把它缩小一点
plt.scatter(2,5,s=101)
好了,现在我们来往图像上呈现一系列的点
import matplotlib.pyplot as plt
#在图像上呈现一系列的点
x = list(range(1,30))
y = [ x_i**2+2*x_i+4 for x_i in x]
plt.scatter(x,y)
#给图标标题并设置字号
plt.title("A table of squares", fontsize=24)
#给坐标轴加上标签并设置字号
plt.xlabel("value",fontsize=12)
plt.ylabel("square of value",fontsize=12)
#给横纵坐标设置字号
plt.tick_params(axis='x',labelsize=12)
plt.tick_params(axis='y',labelsize=12)
plt.show()
我们把自变量x,设置为一个从1开始,到30结束的列表
因变量y由一个关于x的式子给出
最终我们得到了一系列的点组成的集合
如果自变量最大值不是30,而是10000,甚至更大,我们会得到这样的图象
密集的点连成一条线
现在我们来试着限制坐标州的取值范围
import matplotlib.pyplot as plt
#在图像上呈现一系列的点
x = list(range(1,10000))
y = [ x_i**2+2*x_i+4 for x_i in x]
plt.scatter(x,y)
#给图标标题并设置字号
plt.title("A table of squares", fontsize=24)
#给坐标轴加上标签并设置字号
plt.xlabel("value",fontsize=12)
plt.ylabel("square of value",fontsize=12)
#给横纵坐标设置字号
plt.tick_params(axis='x',labelsize=12)
plt.tick_params(axis='y',labelsize=12)
#给坐标轴设置范围
plt.axis([0,5000,0,100000])
plt.show()
我们还可以设置点,以及点的轮廓的颜色
import matplotlib.pyplot as plt
#在图像上呈现一系列的点,设置点以及点的轮廓的颜色
x = list(range(1,10000))
y = [ x_i**2+2*x_i+4 for x_i in x]
plt.scatter(x,y,s=10,c='black',edgecolors='red')
#给图标标题并设置字号
plt.title("A table of squares", fontsize=24)
#给坐标轴加上标签并设置字号
plt.xlabel("value",fontsize=12)
plt.ylabel("square of value",fontsize=12)
#给横纵坐标设置字号
plt.tick_params(axis='x',labelsize=12)
plt.tick_params(axis='y',labelsize=12)
#给坐标轴设置范围
#plt.axis([0,5000,0,100000])
plt.show()
除了用red ,yellow等设置颜色,我们还可以使用RGB颜色模式自定义颜色分量
plt.scatter(x,y,s=10,c=(0,0,1),edgecolors='none')
控制红黄蓝三种颜色的比例,我们可以画出五颜六色的图象
在实际画图的时候,我们往往需要根据每个点数值的大小,对不同的点绘制上不同的颜色,在matplotlib中我们可以使用颜色映射来实现这种功能
plt.scatter(x,y,s=10,c=y,edgecolors='none',cmap=plt.cm.Reds)
参数cmap告诉pyplot使用那个颜色映射,如果我们使用红色
当y的值较小时,点显示为浅红色;y的值较大时,点显示为深红色
保存图表
plt.savefig('squares_plot.png',bbox_inches='tight')
其中,第一个实参指定要以什么样的文件名保存图表,这个图标将被保存到同一个项目文件夹里面
第二个实参指定图标的多余空白区域裁剪掉