Python中有很多封装好的包可以直接使用,最近正好用到了可视化的展示模块matplotlib,感觉虽然API学起来比较复杂,但是看到画出来的图片那么漂亮当然还是心满意足的了,最近几天学习使用了柱状图、直方图、三维立体图、流形图等等,接下来会找时间分别记录一下,当做是自己学习的一个记录也希望能帮到正好需要的人。
今天主要简单了绘制一些漂亮好玩的散点图,下面是具体的实现:
#!usr/bin/env python #encoding:utf-8 from __future__ import division ''' __Author__:沂水寒城 功能:借助于Python绘制一些简单的漂亮的图片 ''' import random import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LogNorm def plot_beautiful(point_num=100): ''' 绘制简单好看的散点图 ''' marker_list=['.', 'v', '^' ,'<', '>', '1' ,'2', '3', '4', '8', 's', 'p', '*', 'h', 'H', '+', 'x', 'D', 'd', '_','o','None'] x_list=np.random.rand(point_num) * 2 # 随机产生50个0~2之间的x坐标 y_list=np.random.rand(point_num) * 2 # 随机产生50个0~2之间的y坐标 colors=np.random.rand(point_num) # 随机产生50个0~1之间的颜色值 area=np.pi*(10 * np.random.rand(point_num))**2 # 点的半径范围:0~15 plt.clf() startnum=421 plt.figure(figsize=(16,16)) for i in range(8): plt.subplot(startnum+i) plt.scatter(x_list, y_list, s=area, c=colors, alpha=0.6, marker=marker_list[i]) plt.savefig('beautiful1.png') plt.clf() plt.figure(figsize=(16,16)) for i in range(8): plt.subplot(startnum+i) plt.scatter(x_list, y_list, s=area, c=colors, alpha=0.6, marker=marker_list[i+8]) plt.savefig('beautiful2.png') plt.clf() plt.figure(figsize=(16,12)) for i in range(6): plt.subplot(321+i) plt.scatter(x_list, y_list, s=area, c=colors, alpha=0.6, marker=marker_list[i+16]) plt.savefig('beautiful3.png') def plot_hist2d_log_demo(point_num=1000000,savepath='density_demo.png'): ''' 绘制密度标示图 ''' plt.clf() x_list=np.random.randn(point_num) y_list=np.random.randn(point_num)+random.randint(1,10) plt.hist2d(x_list, y_list, bins=100, norm=LogNorm()) plt.colorbar() plt.savefig(savepath) if __name__ == '__main__': plot_beautiful(point_num=10000) plot_hist2d_log_demo(point_num=1000000,savepath='density_demo.png')
结果如下:
beautiful1.png
beautiful2.png
beautiful3.png
最后是我们的密度图,我没有清除上一次绘图的痕迹留作对比效果如下:
density_demo.png
个人感觉挺漂亮的,当然绘图的所有参数都是可以依据个人喜好自己调整的。下面我减少点的个数为了更好地看出来效果
beautiful1.png
beautiful2.png
beautiful3.png
density_demo.png
果然,在数据量缩小两个量级之后效果大为改变了,仅仅是觉得好玩学习使用一下,至于正式的论文或者实验报告中我当然是不敢使用这样花哨的图片的哈。