欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python绘制简单漂亮好玩的散点图

程序员文章站 2024-01-19 00:02:58
...

     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

Python绘制简单漂亮好玩的散点图

beautiful2.png

Python绘制简单漂亮好玩的散点图

beautiful3.png

Python绘制简单漂亮好玩的散点图

最后是我们的密度图,我没有清除上一次绘图的痕迹留作对比效果如下:

density_demo.png

Python绘制简单漂亮好玩的散点图

   个人感觉挺漂亮的,当然绘图的所有参数都是可以依据个人喜好自己调整的。下面我减少点的个数为了更好地看出来效果

beautiful1.png

Python绘制简单漂亮好玩的散点图

beautiful2.png

Python绘制简单漂亮好玩的散点图

beautiful3.png

Python绘制简单漂亮好玩的散点图

density_demo.png

Python绘制简单漂亮好玩的散点图

  果然,在数据量缩小两个量级之后效果大为改变了,仅仅是觉得好玩学习使用一下,至于正式的论文或者实验报告中我当然是不敢使用这样花哨的图片的哈。