zoukankan      html  css  js  c++  java
  • 79 Matplotlib和数据可视化

    绘制折线图

    import matplotlib.pyplot as plt
    
    
    def main():
        # 保存x轴数据的列表
        x_values = [x for x in range(1, 11)]
        # 保存y轴数据的列表
        y_values = [x ** 2 for x in range(1, 11)]
        # 设置图表的标题以及x和y轴的说明
        plt.title("Square Numbers")
        plt.xlabel("Value", fontsize=16)
        plt.ylabel("Square", fontsize=16)
        # 设置刻度标记的文字大小
        plt.tick_params(axis="both", labelsize=12)
        # 绘制折线图
        plt.plot(x_values, y_values)
        plt.show()
    
    
    if __name__ == '__main__':
        main()

    绘制散点图

    可以将上面代码中的的plot函数换成scatter函数来绘制散点图,效果如下图所示。

    import matplotlib.pyplot as plt
    
    
    def main():
        # 保存x轴数据的列表
        x_values = [x for x in range(1, 11)]
        # 保存y轴数据的列表
        y_values = [x ** 2 for x in range(1, 11)]
        # 设置图表的标题以及x和y轴的说明
        plt.title("Square Numbers")
        plt.xlabel("Value", fontsize=16)
        plt.ylabel("Square", fontsize=16)
        # 设置刻度标记的文字大小
        plt.tick_params(axis="both", labelsize=12)
        # 绘制折线图
        plt.scatter(x_values, y_values)
        plt.show()
    
    
    if __name__ == '__main__':
        main()

    当然,也可以直接通过plot函数设置绘图的颜色和线条的形状将折线图改造为散点图,对应的代码如下所示,其中参数'xr'表示每个点的记号是‘x’图形,颜色是红色(red)。

    plt.plot(x_values, y_values, "xr")

    1和10对应的‘x’记号在图形边角的位置不太明显,要解决这个问题可以通过添加下面的代码调整x轴和y轴的坐标范围。

    plt.axis([0, 12, 0, 120])

    使用Pygal绘制矢量图

    矢量图(SVG)是计算机图形学中用点、直线或者多边形等基于数学方程的几何图元表示的图像,也是目前应用得非常多的一种图像文件格式,全称是“Scalable Vector Graphics”。和使用像素表示图像的位图不同,SVG基于XML存储图像数据,它是W3C定义的一种开放标准的矢量图形语言,可以用来设计更为清晰的Web图像,因为SVG与分辨率无关,在任意放大时不会丢失细节或影响清晰度。SVG可以直接用代码来描绘图像,也可以用任何文字处理工具来打开它,通过改变SVG的代码我们可以让图像具备交互功能。

    Python中可以使用Pygal来生成SVG,可以通过pip来安装它。

    from random import randint
    import pygal
    
    
    def roll_dice(n=1):
        total = 0
        for _ in range(n):
            total += randint(1, 6)
        return total
    
    
    def main():
        results = []
        # 将两颗筛子摇10000次记录点数
        for _ in range(10000):
            face = roll_dice(2)
            results.append(face)
        freqs = []
        # 统计2~12点各出现了多少次
        for value in range(2, 13):
            freq = results.count(value)
            freqs.append(freq)
        # 绘制柱状图
        hist = pygal.Bar()
        hist.title = "Result of rolling two dice"
        hist.x_labels = [x for x in range(2, 13)]
        hist.add("Frequency", freqs)
    
        # 保存矢量图
        hist.render_to_file("result.svg")
    
    
    if __name__ == '__main__':
        main()
  • 相关阅读:
    可恶的0x1A
    求关注 wcf bindipendpointdelegate 端口限制的功能
    2015 UESTC Training for Data Structures
    Codeforces Round #298 (Div. 2)
    利用rawcap抓包(自己发给自己的包裹)
    PYTHON POST练手
    CentOS安装Nginx 实现HTTP代理
    how to make vim show ^M and substitute it
    Oracle SQL Developer: cannot find a j2se sdk
    Codeforces Round #282 (Div. 2)
  • 原文地址:https://www.cnblogs.com/lynsha/p/13627513.html
Copyright © 2011-2022 走看看