精华内容
下载资源
问答
  • Python绘制折线图之可视化神器pyecharts(一)

    千次阅读 多人点赞 2021-02-19 17:24:08
    简单折线图(无动态和数据标签) 连接空白数据折线图 对数轴折线图示例 折线图堆叠(适合多个折线图展示) 二维曲线折线图(两个数据) 多维度折线图(颜色对比) 阶梯折线图 js高渲染折线图 每文一语 折线...

    目录

    折线图介绍

    折线图模板系列

    双折线图(气温最高最低温度趋势显示)

    面积折线图(紧贴Y轴)

    简单折线图(无动态和数据标签)

    连接空白数据折线图

    对数轴折线图示例

    折线图堆叠(适合多个折线图展示)

    二维曲线折线图(两个数据)

    多维度折线图(颜色对比)

    阶梯折线图

    js高渲染折线图

    每文一语


    折线图介绍

    折线图和柱状图一样是我们日常可视化最多的一个图例,当然它的优势和适用场景相信大家肯定不陌生,要想快速的得出趋势,抓住趋势二字,就会很快的想到要用折线图来表示了。折线图是通过直线将这些点按照某种顺序连接起来形成的图,适用于数据在一个有序的因变量上的变化,它的特点是反应事物随类别而变化的趋势,可以清晰展现数据的增减趋势、增减的速率、增减的规律、峰值等特征。

    优点

    • 能很好的展现沿某个维度的变化趋势
    • 能比较多组数据在同一个维度上的趋势
    • 适合展现较大数据集

    缺点:每张图上不适合展示太多折线

    折线图模板系列

    双折线图(气温最高最低温度趋势显示)

    双折线图在一张图里面显示,肯定有一个相同的维度,然后有两个不同的数据集。比如一天的温度有最高的和最低的温度,我们就可以用这个来作为展示了。

    import pyecharts.options as opts
    from pyecharts.charts import Line
    week_name_list = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
    high_temperature = [11, 11, 15, 13, 12, 13, 10]
    low_temperature = [1, -2, 2, 5, 3, 2, 0]
    (
        Line(init_opts=opts.InitOpts(width="1000px", height="600px"))
        .add_xaxis(xaxis_data=week_name_list)
        .add_yaxis(
            series_name="最高气温",
            y_axis=high_temperature,
            # 显示最大值和最小值
            # markpoint_opts=opts.MarkPointOpts(
            #     data=[
            #         opts.MarkPointItem(type_="max", name="最大值"),
            #         opts.MarkPointItem(type_="min", name="最小值"),
            #     ]
            # ),
            # 显示平均值
            # markline_opts=opts.MarkLineOpts(
            #     data=[opts.MarkLineItem(type_="average", name="平均值")]
            # ),
        )
        .add_yaxis(
            series_name="最低气温",
            y_axis=low_temperature,
            # 设置刻度标签
            # markpoint_opts=opts.MarkPointOpts(
            #     data=[opts.MarkPointItem(value=-2, name="周最低", x=1, y=-1.5)]
            # ),
            # markline_opts=opts.MarkLineOpts(
            #     data=[
            #         opts.MarkLineItem(type_="average", name="平均值"),
            #         opts.MarkLineItem(symbol="none", x="90%", y="max"),
            #         opts.MarkLineItem(symbol="circle", type_="max", name="最高点"),
            #     ]
            # ),
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="未来一周气温变化", subtitle="副标题"),
            # tooltip_opts=opts.TooltipOpts(trigger="axis"),
            # toolbox_opts=opts.ToolboxOpts(is_show=True),
            xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
        )
        .render("最低最高温度折线图.html")
    )
    print("图表已生成!请查收!")

     

     

    面积折线图(紧贴Y轴)

    还记得二重积分吗,面积代表什么?有时候我们就想要看谁围出来的面积大,这个在物理的实际运用中比较常见,下面来看看效果吧。

    import pyecharts.options as opts
    from pyecharts.charts import Line
    from pyecharts.faker import Faker
    from pyecharts.globals import ThemeType
    
    c = (
        Line({"theme": ThemeType.MACARONS})
            .add_xaxis(Faker.choose())
            .add_yaxis("商家A", Faker.values(), is_smooth=True)
            .add_yaxis("商家B", Faker.values(), is_smooth=True)
            .set_series_opts(
            areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
            label_opts=opts.LabelOpts(is_show=False),
        )
            .set_global_opts(
            title_opts=opts.TitleOpts(title="标题"),
            xaxis_opts=opts.AxisOpts(
                axistick_opts=opts.AxisTickOpts(is_align_with_label=True),
                is_scale=False,
                boundary_gap=False,
                name='类别',
                name_location='middle',
                name_gap=30,  # 标签与轴线之间的距离,默认为20,最好不要设置20
                name_textstyle_opts=opts.TextStyleOpts(
                    font_family='Times New Roman',
                    font_size=16  # 标签字体大小
                )),
    
            yaxis_opts=opts.AxisOpts(
                name='数量',
                name_location='middle',
                name_gap=30,
                name_textstyle_opts=opts.TextStyleOpts(
                    font_family='Times New Roman',
                    font_size=16
                    # font_weight='bolder',
                )),
            # toolbox_opts=opts.ToolboxOpts()  # 工具选项
        )
            .render("面积折线图-紧贴Y轴.html")
    )
    print("请查收!")
    

     

    简单折线图(无动态和数据标签)

    此模板和Excel里面的可视化差不多,没有一点功能元素,虽然它是最简洁的,但是我们可以通过这个进行改动,在上面创作的画作。

    import pyecharts.options as opts
    from pyecharts.charts import Line
    from pyecharts.globals import ThemeType
    
    x_data = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
    y_data = [820, 932, 901, 934, 1290, 1330, 1320]
    
    (
        Line({"theme": ThemeType.MACARONS})
            .set_global_opts(
            tooltip_opts=opts.TooltipOpts(is_show=False),
            xaxis_opts=opts.AxisOpts(
                name='类别',
                name_location='middle',
                name_gap=30,  # 标签与轴线之间的距离,默认为20,最好不要设置20
                name_textstyle_opts=opts.TextStyleOpts(
                    font_family='Times New Roman',
                    font_size=16  # 标签字体大小
                )),
            yaxis_opts=opts.AxisOpts(
                type_="value",
                axistick_opts=opts.AxisTickOpts(is_show=True),
                splitline_opts=opts.SplitLineOpts(is_show=True),
                name='数量',
                name_location='middle',
                name_gap=30,
                name_textstyle_opts=opts.TextStyleOpts(
                    font_family='Times New Roman',
                    font_size=16
                    # font_weight='bolder',
                )),
    
    
    )
    .add_xaxis(xaxis_data=x_data)
    .add_yaxis(
        series_name="",
        y_axis=y_data,
        symbol="emptyCircle",
        is_symbol_show=True,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .render("简单折线图.html")
    )

     

     

    连接空白数据折线图

    有时候我们在处理数据的时候,发现有些类别的数据缺失了,这个时候我们想要它可以自动连接起来,那么这个模板就可以用到了。

    import pyecharts.options as opts
    from pyecharts.charts import Line
    from pyecharts.faker import Faker
    from pyecharts.globals import ThemeType
    
    y = Faker.values()
    y[3], y[5] = None, None
    c = (
        Line({"theme": ThemeType.WONDERLAND})
            .add_xaxis(Faker.choose())
            .add_yaxis("商家A", y, is_connect_nones=True)
            .set_global_opts(title_opts=opts.TitleOpts(title="标题"),
                             xaxis_opts=opts.AxisOpts(
                                 name='类别',
                                 name_location='middle',
                                 name_gap=30,  # 标签与轴线之间的距离,默认为20,最好不要设置20
                                 name_textstyle_opts=opts.TextStyleOpts(
                                     font_family='Times New Roman',
                                     font_size=16  # 标签字体大小
                                 )),
                             yaxis_opts=opts.AxisOpts(
                                 name='数量',
                                 name_location='middle',
                                 name_gap=30,
                                 name_textstyle_opts=opts.TextStyleOpts(
                                     font_family='Times New Roman',
                                     font_size=16
                                     # font_weight='bolder',
                                 )), )
            # toolbox_opts=opts.ToolboxOpts()  # 工具选项)
            .render("数据缺失折线图.html")
    )

     

    对数轴折线图示例

    此图例未必用的上,当然也可以作为一个模板分享于此。

     

    import pyecharts.options as opts
    from pyecharts.charts import Line
    
    x_data = ["一", "二", "三", "四", "五", "六", "七", "八", "九"]
    y_data_3 = [1, 3, 9, 27, 81, 247, 741, 2223, 6669]
    y_data_2 = [1, 2, 4, 8, 16, 32, 64, 128, 256]
    y_data_05 = [1 / 2, 1 / 4, 1 / 8, 1 / 16, 1 / 32, 1 / 64, 1 / 128, 1 / 256, 1 / 512]
    
    
    (
        Line(init_opts=opts.InitOpts(width="1200px", height="600px"))
        .add_xaxis(xaxis_data=x_data)
        .add_yaxis(
            series_name="1/2的指数",
            y_axis=y_data_05,
            linestyle_opts=opts.LineStyleOpts(width=2),
        )
        .add_yaxis(
            series_name="2的指数", y_axis=y_data_2, linestyle_opts=opts.LineStyleOpts(width=2)
        )
        .add_yaxis(
            series_name="3的指数", y_axis=y_data_3, linestyle_opts=opts.LineStyleOpts(width=2)
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="对数轴示例", pos_left="center"),
            tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b} : {c}"),
            legend_opts=opts.LegendOpts(pos_left="left"),
            xaxis_opts=opts.AxisOpts(type_="category", name="x"),
            yaxis_opts=opts.AxisOpts(
                type_="log",
                name="y",
                splitline_opts=opts.SplitLineOpts(is_show=True),
                is_scale=True,
            ),
        )
        .render("对数轴折线图.html")
    )

     

    折线图堆叠(适合多个折线图展示)

    多个折线图展示要注意的是,数据量不能过于的接近,不然密密麻麻的折线,反而让人看起来不舒服。

    import pyecharts.options as opts
    from pyecharts.charts import Line
    from pyecharts.globals import ThemeType
    
    x_data = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
    y_data = [820, 932, 901, 934, 1290, 1330, 1320]
    
    (
        Line({"theme": ThemeType.MACARONS})
            .add_xaxis(xaxis_data=x_data)
            .add_yaxis(
            series_name="邮件营销",
            stack="总量",
            y_axis=[120, 132, 101, 134, 90, 230, 210],
            label_opts=opts.LabelOpts(is_show=False),
        )
            .add_yaxis(
            series_name="联盟广告",
            stack="总量",
            y_axis=[220, 182, 191, 234, 290, 330, 310],
            label_opts=opts.LabelOpts(is_show=False),
        )
            .add_yaxis(
            series_name="视频广告",
            stack="总量",
            y_axis=[150, 232, 201, 154, 190, 330, 410],
            label_opts=opts.LabelOpts(is_show=False),
        )
            .add_yaxis(
            series_name="直接访问",
            stack="总量",
            y_axis=[320, 332, 301, 334, 390, 330, 320],
            label_opts=opts.LabelOpts(is_show=False),
        )
            .add_yaxis(
            series_name="搜索引擎",
            stack="总量",
            y_axis=[820, 932, 901, 934, 1290, 1330, 1320],
            label_opts=opts.LabelOpts(is_show=False),
        )
            .set_global_opts(
            title_opts=opts.TitleOpts(title="折线图堆叠"),
            tooltip_opts=opts.TooltipOpts(trigger="axis"),
            yaxis_opts=opts.AxisOpts(
                type_="value",
                axistick_opts=opts.AxisTickOpts(is_show=True),
                splitline_opts=opts.SplitLineOpts(is_show=True),
                name='数量',
                name_location='middle',
                name_gap=40,
                name_textstyle_opts=opts.TextStyleOpts(
                    font_family='Times New Roman',
                    font_size=16
                    # font_weight='bolder',
                )),
            xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False,
                                     name='类别',
                                     name_location='middle',
                                     name_gap=30,  # 标签与轴线之间的距离,默认为20,最好不要设置20
                                     name_textstyle_opts=opts.TextStyleOpts(
                                         font_family='Times New Roman',
                                         font_size=16  # 标签字体大小
                                     )),
        )
            .render("折线图堆叠.html")
    )
    

     

    二维曲线折线图(两个数据)

    有时候需要在一个图里面进行对比,那么我们应该如何呈现一个丝滑般的曲线折线图呢?看看这个

    import pyecharts.options as opts
    from pyecharts.charts import Line
    from pyecharts.faker import Faker
    
    c = (
        Line()
    
            .add_xaxis(Faker.choose())
            .add_yaxis("商家A", Faker.values(), is_smooth=True)  # 如果不想变成曲线就删除即可
            .add_yaxis("商家B", Faker.values(), is_smooth=True)
            .set_global_opts(title_opts=opts.TitleOpts(title="标题"),
                             xaxis_opts=opts.AxisOpts(
                                 name='类别',
                                 name_location='middle',
                                 name_gap=30,  # 标签与轴线之间的距离,默认为20,最好不要设置20
                                 name_textstyle_opts=opts.TextStyleOpts(
                                     font_family='Times New Roman',
                                     font_size=16  # 标签字体大小
                                 )),
                             yaxis_opts=opts.AxisOpts(
                                 name='数量',
                                 name_location='middle',
                                 name_gap=30,
                                 name_textstyle_opts=opts.TextStyleOpts(
                                     font_family='Times New Roman',
                                     font_size=16
                                     # font_weight='bolder',
                                 )),
                             # toolbox_opts=opts.ToolboxOpts()  # 工具选项
                             )
    
            .render("二维折线图.html")
    )
    

     

     

    多维度折线图(颜色对比)

    次模板的最大的好处就是可以移动鼠标智能显示数据

    import pyecharts.options as opts
    from pyecharts.charts import Line
    
    # 将在 v1.1.0 中更改
    from pyecharts.commons.utils import JsCode
    
    js_formatter = """function (params) {
            console.log(params);
            return '降水量  ' + params.value + (params.seriesData.length ? ':' + params.seriesData[0].data : '');
        }"""
    
    (
        Line(init_opts=opts.InitOpts(width="1200px", height="600px"))
        .add_xaxis(
            xaxis_data=[
                "2016-1",
                "2016-2",
                "2016-3",
                "2016-4",
                "2016-5",
                "2016-6",
                "2016-7",
                "2016-8",
                "2016-9",
                "2016-10",
                "2016-11",
                "2016-12",
            ]
        )
        .extend_axis(
            xaxis_data=[
                "2015-1",
                "2015-2",
                "2015-3",
                "2015-4",
                "2015-5",
                "2015-6",
                "2015-7",
                "2015-8",
                "2015-9",
                "2015-10",
                "2015-11",
                "2015-12",
            ],
            xaxis=opts.AxisOpts(
                type_="category",
                axistick_opts=opts.AxisTickOpts(is_align_with_label=True),
                axisline_opts=opts.AxisLineOpts(
                    is_on_zero=False, linestyle_opts=opts.LineStyleOpts(color="#6e9ef1")
                ),
                axispointer_opts=opts.AxisPointerOpts(
                    is_show=True, label=opts.LabelOpts(formatter=JsCode(js_formatter))
                ),
            ),
        )
        .add_yaxis(
            series_name="2015 降水量",
            is_smooth=True,
            symbol="emptyCircle",
            is_symbol_show=False,
            # xaxis_index=1,
            color="#d14a61",
            y_axis=[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
            label_opts=opts.LabelOpts(is_show=False),
            linestyle_opts=opts.LineStyleOpts(width=2),
        )
        .add_yaxis(
            series_name="2016 降水量",
            is_smooth=True,
            symbol="emptyCircle",
            is_symbol_show=False,
            color="#6e9ef1",
            y_axis=[3.9, 5.9, 11.1, 18.7, 48.3, 69.2, 231.6, 46.6, 55.4, 18.4, 10.3, 0.7],
            label_opts=opts.LabelOpts(is_show=False),
            linestyle_opts=opts.LineStyleOpts(width=2),
        )
        .set_global_opts(
            legend_opts=opts.LegendOpts(),
            tooltip_opts=opts.TooltipOpts(trigger="none", axis_pointer_type="cross"),
            xaxis_opts=opts.AxisOpts(
                type_="category",
                axistick_opts=opts.AxisTickOpts(is_align_with_label=True),
                axisline_opts=opts.AxisLineOpts(
    
                    is_on_zero=False, linestyle_opts=opts.LineStyleOpts(color="#d14a61")
    
                ),
                axispointer_opts=opts.AxisPointerOpts(
                    is_show=True, label=opts.LabelOpts(formatter=JsCode(js_formatter))
                ),
            ),
            yaxis_opts=opts.AxisOpts(
                type_="value",
                splitline_opts=opts.SplitLineOpts(
                    is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)
                ),
            ),
        )
        .render("多维颜色多维折线图.html")
    )

     

    阶梯折线图

    import pyecharts.options as opts
    from pyecharts.charts import Line
    from pyecharts.faker import Faker
    from pyecharts.globals import ThemeType
    c = (
        Line({"theme": ThemeType.MACARONS})
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values(), is_step=True)
            .set_global_opts(title_opts=opts.TitleOpts(title="标题"),
                             xaxis_opts=opts.AxisOpts(
                                 name='类别',
                                 name_location='middle',
                                 name_gap=30,  # 标签与轴线之间的距离,默认为20,最好不要设置20
                                 name_textstyle_opts=opts.TextStyleOpts(
                                     font_family='Times New Roman',
                                     font_size=16  # 标签字体大小
                                 )),
                             yaxis_opts=opts.AxisOpts(
                                 name='数量',
                                 name_location='middle',
                                 name_gap=30,
                                 name_textstyle_opts=opts.TextStyleOpts(
                                     font_family='Times New Roman',
                                     font_size=16
                                     # font_weight='bolder',
                                 )),
                             # toolbox_opts=opts.ToolboxOpts()  # 工具选项
                             )
        .render("阶梯折线图.html")
    )

     

     

    js高渲染折线图

    里面的渲染效果相当好看,可以适用于炫酷的展示,数据集可以展示也可以不展示,在相应的位置更改参数即可。

    import pyecharts.options as opts
    from pyecharts.charts import Line
    from pyecharts.commons.utils import JsCode
    
    
    x_data = ["14", "15", "16", "17", "18", "19", "20", "21", "22", "23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40"]
    y_data = [393, 438, 485, 631, 689, 824, 987, 1000, 1100, 1200,1500,1000,1700,1900,2000,500,1200,1300,1500,1800,1500,1900,1700,1000,1900,1800,2100,1600,2200,2300]
    
    background_color_js = (
        "new echarts.graphic.LinearGradient(0, 0, 0, 1, "
        "[{offset: 0, color: '#c86589'}, {offset: 1, color: '#06a7ff'}], false)"
    )
    area_color_js = (
        "new echarts.graphic.LinearGradient(0, 0, 0, 1, "
        "[{offset: 0, color: '#eb64fb'}, {offset: 1, color: '#3fbbff0d'}], false)"
    )
    
    c = (
        Line(init_opts=opts.InitOpts(bg_color=JsCode(background_color_js)))
        .add_xaxis(xaxis_data=x_data)
        .add_yaxis(
            series_name="注册总量",
            y_axis=y_data,
            is_smooth=True,
            is_symbol_show=True,
            symbol="circle",
            symbol_size=6,
            linestyle_opts=opts.LineStyleOpts(color="#fff"),
            label_opts=opts.LabelOpts(is_show=True, position="top", color="white"),
            itemstyle_opts=opts.ItemStyleOpts(
                color="red", border_color="#fff", border_width=3
            ),
            tooltip_opts=opts.TooltipOpts(is_show=False),
            areastyle_opts=opts.AreaStyleOpts(color=JsCode(area_color_js), opacity=1),
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title="OCTOBER 2015",
                pos_bottom="5%",
                pos_left="center",
                title_textstyle_opts=opts.TextStyleOpts(color="#fff", font_size=16),
            ),
            xaxis_opts=opts.AxisOpts(
                type_="category",
                boundary_gap=False,
                axislabel_opts=opts.LabelOpts(margin=30, color="#ffffff63"),
                axisline_opts=opts.AxisLineOpts(is_show=False),
                axistick_opts=opts.AxisTickOpts(
                    is_show=True,
                    length=25,
                    linestyle_opts=opts.LineStyleOpts(color="#ffffff1f"),
                ),
                splitline_opts=opts.SplitLineOpts(
                    is_show=True, linestyle_opts=opts.LineStyleOpts(color="#ffffff1f")
                ),
            ),
            yaxis_opts=opts.AxisOpts(
                type_="value",
                position="right",
                axislabel_opts=opts.LabelOpts(margin=20, color="#ffffff63"),
                axisline_opts=opts.AxisLineOpts(
                    linestyle_opts=opts.LineStyleOpts(width=2, color="#fff")
                ),
                axistick_opts=opts.AxisTickOpts(
                    is_show=True,
                    length=15,
                    linestyle_opts=opts.LineStyleOpts(color="#ffffff1f"),
                ),
                splitline_opts=opts.SplitLineOpts(
                    is_show=True, linestyle_opts=opts.LineStyleOpts(color="#ffffff1f")
                ),
            ),
            legend_opts=opts.LegendOpts(is_show=False),
        )
        .render("高渲染.html")
    )

     

    所有图表均可配置,无论是字体的大小,还是颜色,还是背景都可以自己配置哟!下期文章我们继续探索折线图的魅力哟!

     

    每文一语

    万物皆对象,一切可配置!

    展开全文
  • python学习:使用Matplotlib画实时的动态折线图

    万次阅读 多人点赞 2019-04-26 18:01:37
    python学习:使用Matplotlib画实时的动态折线图 有时,为了方便看数据的变化情况,需要画一个动态图来看整体的变化情况。主要就是用Matplotlib库。 参考博客链接:...

    python学习:使用Matplotlib画实时的动态折线图

    有时,为了方便看数据的变化情况,需要画一个动态图来看整体的变化情况。主要就是用Matplotlib库。

    参考博客链接:https://blog.csdn.net/zhanghao3389/article/details/82685072

                              https://blog.csdn.net/u013468614/article/details/58689735

                            

    首先,说明plot函数的说明。
    
    plt.plot(x,y,format_string,**kwargs) 
    
    x是x轴数据,y是y轴数据。x与y维度一定要对应。
    format_string控制曲线的格式字串 
    下面详细说明:
    color(c):线条颜色
    linestyle(ls):线条样式
    linewidth(lw):线的粗细
    
    关于标记的一些参数:
    marker:标记样式
    markeredgecolor(mec):标记边缘颜色
    markeredgewidth(mew):标记边缘宽度
    markerfacecolor(mfc):标记中心颜色
    markersize(ms):标记大小
    
    另外,marker关键字参数可以和color以及linestyle这两个关键字参数合并为一个字符串。
    例如:‘ro-’表示红色的直线,标记为圆形

    线条color颜色:

    线条样式(linestyle):

     

    标记(marker)参数:

     

     

    程序demo如下:

    得到的结果是循环的sin(x)的折线图

    '''
    动态折线图演示示例
    '''
    
    import numpy as np
    import matplotlib.pyplot as plt
    
    plt.ion()
    plt.figure(1)
    t_list = []
    result_list = []
    t = 0
    
    while True:
        if t >= 10 * np.pi:
            plt.clf()
            t = 0
            t_list.clear()
            result_list.clear()
        else:
            t += np.pi / 4
            t_list.append(t)
            result_list.append(np.sin(t))
            plt.plot(t_list, result_list,c='r',ls='-', marker='o', mec='b',mfc='w')  ## 保存历史数据
            #plt.plot(t, np.sin(t), 'o')
            plt.pause(0.1)

     

    得到的结果如下:

    展开全文
  • Python绘制动态图形

    2020-05-29 18:22:17
    Python绘制动态图形一、柱形图二、气泡图三、折线图四、小提琴图五、面积图六、漏斗图七、带状图 日常生活中,我们经常需要对多年的数据进行分析。如果对每一年的数据都进行可视化,那么将需要我们重复的采用相同的...


    日常生活中,我们经常需要对多年的数据进行分析。如果对每一年的数据都进行可视化,那么将需要我们重复的采用相同的代码对数据进行可视化。在年份较多的情况下,这无疑增加了我们的工作量,且不能很好地帮助我们发现随着时间的不同数据的变化情况。基于此,本文将众多年份合并在一张图上,用动态变化图形对数据进行可视化。本文主要阐述了几种基本图形的动态可视化。

    一、柱形图

    import plotly.express as px
    from vega_datasets import data
    # d读取数据
    df = data.disasters()
    df = df[df.Year > 1990]
    #  画图
    fig = px.bar(df,
                 y="Entity",
                 x="Deaths",
                 animation_frame="Year", 
                 orientation='h',  #  水平方向
                 range_x=[0, df.Deaths.max()],  # 变动的范围
                 # 柱子的颜色
                 color="Entity" )
    # 图形大小,背景等设置
    fig.update_layout(width=800, height=500,
                      xaxis_showgrid=False,
                      yaxis_showgrid=False,  
                      paper_bgcolor='rgba(0,0,0,0)', # 图片背景颜色
                      plot_bgcolor='rgba(0,0,0,0)',  # 柱形图部分的背景颜色
                      title_text='Evolution of Natural Disasters',   # 标题
                      showlegend=False)
    fig.update_xaxes(title_text='Number of Deaths')  # x 轴标题
    fig.update_yaxes(title_text='')   # y 轴标题
    fig.show()
    

    在这里插入图片描述
    小编还不会保存gif图形,这里将就看一下啦!

    二、气泡图

    import plotly.express as px
    # 读取数据
    df = px.data.gapminder()
    fig = px.scatter(df, x="gdpPercap", y="lifeExp", animation_frame="year", size="pop",
                     color="continent", hover_name="country", log_x=True, size_max=55,
                      range_x=[100, 100000], range_y=[25, 90])
    fig.update_layout(width=800,
                      height=500,
                      xaxis_showgrid=False,
                      yaxis_showgrid=False,
                      paper_bgcolor='rgba(0,0,0,0)',
                      plot_bgcolor='rgba(0,0,0,0)')
    

    在这里插入图片描述

    三、折线图

    fig = px.line( df, x="gdpPercap", y="lifeExp", line_dash=None, animation_frame='year',  color="continent",
                     hover_name="country",log_x=True, range_x=[100, 100000], range_y=[25, 90])
        
    fig.update_layout(width=800,
                      height=500,
                      xaxis_showgrid=False,
                      yaxis_showgrid=False,
                      paper_bgcolor='rgba(0,0,0,0)',
                      plot_bgcolor='rgba(0,0,0,0)')    
    fig.show()
    

    在这里插入图片描述

    四、小提琴图

    fig = px.violin( df, x="continent", y="pop", animation_frame='year', color="continent")
        
    fig.update_layout(width=800, height=500, xaxis_showgrid=False, yaxis_showgrid=False,
                      paper_bgcolor='rgba(0,0,0,0)', plot_bgcolor='rgba(0,0,0,0)')    
        
    

    在这里插入图片描述

    五、面积图

    fig = px.area( df, x="continent", y="lifeExp", animation_frame='year', color="continent")
        
    fig.update_layout(width=800, height=500, xaxis_showgrid=False, yaxis_showgrid=False,
                      paper_bgcolor='rgba(0,0,0,0)', plot_bgcolor='rgba(0,0,0,0)')       
    

    在这里插入图片描述

    六、漏斗图

    fig = px.funnel( df, x="continent", y="lifeExp", animation_frame='year', color="continent")
        
    fig.update_layout(width=800, height=500, xaxis_showgrid=False, yaxis_showgrid=False,
                      paper_bgcolor='rgba(0,0,0,0)', plot_bgcolor='rgba(0,0,0,0)')    
    

    在这里插入图片描述

    七、带状图

    fig = px.strip( df, x="continent", y="pop", animation_frame='year', color="continent", stripmode='overlay')
        
    fig.update_layout(width=800, height=500, xaxis_showgrid=False, yaxis_showgrid=False,
                      paper_bgcolor='rgba(0,0,0,0)', plot_bgcolor='rgba(0,0,0,0)')    
    

    在这里插入图片描述

    展开全文
  • Python使用matplotlib画动态图

    万次阅读 多人点赞 2018-06-11 14:00:22
    下面给出两个例子,分别可以画出动态条形图和动态折线图(使用两种不同的方法)。 注意要使用到plt.pause(time)函数。 动态条形图 基本原理是将数据放入数组,然后每次往数组里面增加一个数...

    机器学习需要使用python实现相应的算法,因此学习了Matplotlib中的画图。
    更多内容访问omegaxyz.com

    当然为了能显示机器学习中每次迭代的效果与收敛速度,需要画出动态图形。

    下面给出两个例子,分别可以画出动态条形图和动态折线图(使用两种不同的方法)。

    注意要使用到plt.pause(time)函数。

    动态条形图
    基本原理是将数据放入数组,然后每次往数组里面增加一个数,清除之前的图,重新画出图像。

    代码:

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots()
    y1 = []
    for i in range(50):
        y1.append(i)  # 每迭代一次,将i放入y1中画出来
        ax.cla()   # 清除键
        ax.bar(y1, label='test', height=y1, width=0.3)
        ax.legend()
        plt.pause(0.1)

    这里写图片描述

    动态折线图
    基本原理是使用一个长度为2的数组,每次替换数据并在原始图像后追加。

    代码:

    import numpy as np
    import matplotlib.pyplot as plt
    
    plt.axis([0, 100, 0, 1])
    plt.ion()
    
    xs = [0, 0]
    ys = [1, 1]
    
    for i in range(100):
        y = np.random.random()
        xs[0] = xs[1]
        ys[0] = ys[1]
        xs[1] = i
        ys[1] = y
        plt.plot(xs, ys)
        plt.pause(0.1)

    效果:
    这里写图片描述
    更多内容访问omegaxyz.com
    网站所有代码采用Apache 2.0授权
    网站文章采用知识共享许可协议BY-NC-SA4.0授权
    © 2018 • OmegaXYZ-版权所有 转载请注明出处

    展开全文
  • matlab将表格数据转化成折线图代码python_poc Python POC Python动态的解释型语言。 没有变量,参数或函数的类型声明。 这使代码简短而灵活,但是您会丢失对源代码的编译器时间类型检查。 Python在运行时跟踪变量...
  • 当使用动态折线图时,只需动态更新数据和横纵坐标的取值范围。总体代码中已经写出,下面不再赘述。 # 图中展示点的数量 pointcount=5 x =[i for i in range(20 )] y1 =[i**2 for i in range(20 )] ...
  • python matplotlib 绘图

    2021-03-21 14:19:32
    python matplotlib 绘图。散点图、折线图、柱状图、直方图、图像属性(颜色,数据标记属性、线性属性)、子图、三维曲线图、三维散点图、三维曲面图、动态图。
  • python--pyecharts可视化实现《一》--高级动态绘图[视觉盛宴]1、pyecharts前言与安装2、pyecharts绘图实现anaconda(图片是可动态的,这里展示静态图片)2.1制作仪表盘2.2制作条形12.3制作条形22.4制作动态散点...
  • matplotlib 的折线图,散点图,图中标注文字信息,设置横坐标密度,调整横坐标旋转角度,文字大小、各部分颜色、保存形式、美化调整 和 python+matplotlib实现在图中鼠标指向标注点处显示标注信息(标注信息动态显示...
  • Line 折线图/面积图 Radar 雷达图 Sankey 桑葚图 WordCloud 词云图 Funnel 漏斗图 Gauge 仪表盘 Graph 关系图 Liquid 水球图 Parallel 平行坐标系 Polar 极坐标系 HeatMap 热力图 散点图 # 1.选择图表类型:我们使用...
  • python教你生成动态二维码

    千次阅读 2020-03-17 18:48:01
    2、绘制折线图 3、绘制柱形图 4、绘制帕累托图(在柱形图基础之上绘制双Y轴图) 如果觉得好,就扫描下方的二维码关注我吧!!! 1、myqr相关参数的使用说明 2、python代码生成静态二维码 # 生成的二维码最终在你电脑...
  • 此篇为 一次python画图经历——涉及 matplotlib 的折线图,散点图,图中标注文字信息,设置横坐标密度,调整横坐标旋转角度,文字大小、各部分颜色、保存形式、美化调整 的延续,当时自以为很好地处理了标注信息的...
  • Line折线图/面积图 Radar 雷达图 Sankey 桑葚图 WordCloud 词云图 Funnel 漏斗图 Gauge 仪表盘 Graph 关系图 Liquid 水球图 Parallel 平行坐标系 Polar 极坐标系 HeatMap 热力图 Map 地图 Map 迁移地图 地图 用...
  • Line折线图/面积图 Radar 雷达图 Sankey 桑葚图 WordCloud 词云图 Funnel 漏斗图 Gauge 仪表盘 Graph 关系图 Liquid 水球图 Parallel 平行坐标系 Polar 极坐标系 HeatMap 热力图 热力图 import random from ...
  • 原标题:Matplotlib Animations 数据可视化进阶如果你对我的代码有兴趣,可以在我的GitHub查看。...除了折线图、直方图和热力图,Matplotlib HIA可以实现一些简单的动画。如下图所示,以John Conway 的游...
  • TimeSeriesAnimationChart是一个有用的可视化时间序列数据的python工具,其可以使用动态的柱形图,折线图,饼图这种方式直观地表示时间序列数据 支持json \ xlsx \ csv三种文件格式输入,动态图可以保存为gif格式 ...
  • 本实验中将所取的点的横坐标存放于动态数组中,通过插值方法计算得到的对应纵坐标存放于动态数组中。 本实验将Lagrange插值、Newton插值和三次样条插值实现为一个类,并在Button单击事件中调用该类相应函数,得出...
  • Line折线图/面积图 Radar 雷达图 Sankey 桑葚图 WordCloud 词云图 Funnel 漏斗图 Gauge 仪表盘 Graph 关系图 Liquid 水球图 Parallel 平行坐标系 Polar 极坐标系 HeatMap 热力图 极坐标图 import random from ...
  • Line折线图/面积图 Radar 雷达图 Sankey 桑葚图 WordCloud 词云图 Funnel 漏斗图 Gauge 仪表盘 Graph 关系图 Liquid 水球图 Parallel 平行坐标系 Polar 极坐标系 HeatMap 热力图 饼图 普通饼状图 from pyecharts....
  • 文章目录Streamlit安装Streamlit自带示例App创建自己的AppStreamlit主要用法总结文字、公式st.write()表格Code各种控件侧边栏控件绘图、图片、...动态绘图动态扩增表格动态折线图缓存Magic commands其他可参考的资料...
  • Python数据特征分析-对比分析

    千次阅读 2020-05-12 09:40:32
    Python数据特征分析-对比分析对比分析1、绝对数比较 → 相减生成数据折线图比较柱状图比较柱状图堆叠图比较差值折线图比较2、相对数比较 → 相除结构分析生成数据计算额度占比绘制折线图比较AB产品比例分析创建...
  • 2020年Python学习笔记目录

    千次阅读 2020-10-24 09:41:24
    一、学习笔记 给Python IDLE添加行号显示 一个基于信息论的人生观 吴军《谷歌面试题:倒置英文句子》 Python学习笔记:目录与文件操作 ...Python学习笔记:过滤N位数并绘制折线图 Python学习笔记:演示多根继承 Pyth
  • 通过python实现与三菱PLC通讯,读取/写入,并使用tkinter界面化,还使用matplotlib做了动态折线图。软件初衷是监控PLC设备,所以没有写入操作,单工具类中已包含写入操作,需要的话可以自行添加,工具类是...
  • 3.echarts绘制饼状图 柱状图 折线图 4.pyecharts绘制饼状图 柱状图 折线图 5.动态生成sql语句 6.如何获取一个对象的类名 7.基于sql的数据分析 1.python数据分析库有哪些 # python的数据分析库 # pandas ...
  • 文章目录1. Matplotlib 介绍2. 绘图基本语法与常用参数2.1 pyplot 基础... 散点图和折线图3.1 绘制散点图3.2 绘制折线图4.直方图、饼图和箱线图4.1 绘制直方图4.2 绘制饼图4.3 绘制箱线图 1. Matplotlib 介绍   Ma...
  • 概念:两个互相联系的指标进行比较 类型:绝对数比较(相减) 、相对数比较(相除) 其中相对数比较分析也包括:结构分析、比例分析、动态对比分析 1.绝对数比较 a.对比的指标在量级上不能差别过大...b.折线图、柱状图*
  • 1.静态爬虫与动态爬虫 何为动态爬虫,html中的信息是静态的,...比如电商网站的评论,某些网站的一些条形图啊,折线图啊,(这些图实际上是数字,只是通过某种接口传到网页上,然后渲染成了图的形式,其本质上是数字
  • 分享一个超级好用的工具,绝对用心挑选,让你惊艳!...同样一堆数据,你或许只能做出柱状图、折线图,呈现最大/最小/平均值; 小宏却早已经把各类数据整合到一起,生成一个动态的可视化图表,让领导
  • 大学同学小宏,在北京一家互联网教育公司做...同样一堆数据,你或许只能做出柱状图、折线图,呈现最大/最小/平均值;小宏却早已经把各类数据整合到一起,生成一个动态的可视化图表,让领导一眼就能抓住运营问题的关...
  • 任务225: 实例上手折线图 任务226: 实例上手饼状图 任务227: 实例上手散点图 任务228: 实例上手文本表 任务229: 实例上手热图 任务230: 实例上手直方图 任务231: 实例上手甘特图 任务232: 实例上手盒须图 ...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

python动态折线图

python 订阅