• python科研做图系列之雷达图


    参考资料

    重点参考知乎一步一步的讲解

    1. 参考知乎

      CSDN给出了一些参数
      matplotbib库雷达图官网
      seaborn画图汇总

    5 pyecharts 雷达图 这篇写的很不错,参数解释
    也详细给出来了。

    matplotlib库画的

    参考

    复现一个 pyecharts的雷达图

    复现一下5,并详细讲解一下代码吧。
    2022年11月12日09:12:03。
    复现过程中 特别坑的bug记录
    在这里插入图片描述

    ImportError: cannot import name 'Radar' from partially initialized module 'p
    
    • 1

    然后 在想 昨天 晚上自己 是 成功运行过的哇,还把截图发给导师了,
    仔细会议 自己昨天晚上成功复现的步骤,
    我记得有安装 pyecharts库这一步,然后 我把 pyecharts这个库卸载重装就可以运行了。
    果然重启能解决99%的问题!!!血泪经验!!!!

    遂成功复现,。
    html端复现成功的完整代码——效果还不错

    from pyecharts import options as opts
    
    from pyecharts.charts import Radar
    from pyecharts.commons.utils import JsCode
    
    import pandas as pd
    
    
    # 导入输出图片工具
    from pyecharts.render import make_snapshot
    # 使用snapshot-selenium 渲染图片
    from snapshot_selenium import snapshot
    data = pd.DataFrame(pd.read_excel('test.xlsx'))
    
    # 生成绘图series
    data_radar = []
    for row in range(data.shape[0]):
        dic = {}
        value = []
        for col in range(1, data.shape[1]):
            value.append(int(data.iloc[row, col]))
        dic['name'], dic['value'] = data['员工'][row], value
        data_radar.append([dic])
    
    # 各特征维度取值范围
    scope = []
    for col in range(1, data.shape[1]):
        dic = {}
        dic['name'] = data.columns[col]
        dic['max'], dic['min'] = max(data.iloc[:, col]), 0
        scope.append(dic)
    
    c = (
        # Radar()
        Radar(init_opts=opts.InitOpts(bg_color={"type": "pattern", "image": JsCode("img"), "repeat": "no-repeat"}))
            .add_js_funcs("""    var img = new Image();
                                img.src = 'bg.png';    """)
        #     .add_js_funcs("""      <a id="download" href="">下载a>
        # <script>
        # const a = window.document.querySelector('#download')
        # a.addEventListener('click',()=>{
        #     const content = document.querySelector('svg').outerHTML
        #     const blob= new Blob([content], {type: 'xml/svg'})
        #     a.href = URL.createObjectURL(blob)
        #     a.download = 'test.svg'
        # })
        #                    """)
    
            .add_schema(
            schema=scope,
            shape="circle",
            center=["50%", "50%"],  # 宽高:900px*500px
            radius="60%",
            angleaxis_opts=opts.AngleAxisOpts(
                min_=0,
                max_=360,
                is_clockwise=False,
                interval=10,
                axistick_opts=opts.AxisTickOpts(is_show=True),
                axislabel_opts=opts.LabelOpts(is_show=True),
                axisline_opts=opts.AxisLineOpts(is_show=True),
                splitline_opts=opts.SplitLineOpts(is_show=True)
            ),
            radiusaxis_opts=opts.RadiusAxisOpts(
                min_=0,
                max_=30,
                interval=5,
                splitarea_opts=opts.SplitAreaOpts(
                    is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
                ),
            ),
            polar_opts=opts.PolarOpts(),
            splitline_opt=opts.SplitLineOpts(is_show=False)
        )
            .add(
            series_name="许一",
            data=data_radar[0],
            areastyle_opts=opts.AreaStyleOpts(opacity=0.2),
            linestyle_opts=opts.LineStyleOpts(width=2),
            color='#fc5a50'
        )
            .add(
            series_name="刘二",
            data=data_radar[1],
            areastyle_opts=opts.AreaStyleOpts(opacity=0.2),
            linestyle_opts=opts.LineStyleOpts(width=2),
            color='white'
        )
            .add(
            series_name="张三",
            data=data_radar[2],
            areastyle_opts=opts.AreaStyleOpts(opacity=0.2),
            linestyle_opts=opts.LineStyleOpts(width=2),
            color='white'
        )
            .add(
            series_name="李四",
            data=data_radar[3],
            areastyle_opts=opts.AreaStyleOpts(opacity=0.2),
            linestyle_opts=opts.LineStyleOpts(width=2),
            color='#aa23ff'
        )
            .add(
            series_name="王五",
            data=data_radar[4],
            areastyle_opts=opts.AreaStyleOpts(opacity=0.2),
            linestyle_opts=opts.LineStyleOpts(width=2),
            color='#fcb001'
        )
            .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
            #.set_global_opts(title_opts=opts.TitleOpts(title='员工评价',  pos_left='left'))
            .render("雷达图示例.html")
    
    )
    # 这种方法效果不好,暂时不要。
    # from snapshot_phantomjs import snapshot
    # make_snapshot(snapshot, c.render(), "a.png")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 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
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117

    尝试在上面的基础上,把pyecharts 导出存为一般的png图

    参考

    也不复杂就是
    把下载好的 phantomjs 的路径加到系统变量就可以了。
    在这里插入图片描述

    在这里插入图片描述
    成功复现~!
    但是不知道为什么 导出的图片会有这种 网格点,

    在这里插入图片描述
    买了本书 但是 还在路上。
    先用其他方法来画图把,其实这个网页版的图还不错。

    尝试在上面的基础上,把pyecharts 导出存为一般的矢量图

    参考
    在这里插入图片描述
    下载了个寂寞

    先不下载了

    用pygal画雷达图

    参考
    他这个其实也是官网的例子。

    保存png格式会报错,
    解决方案参考
    我安装完 确实自动添加了环境变量。
    但是 还是报错,可能是没有重启,
    于是重启一下。
    结果还是不行,索性不要png了,我直接来浏览器看svg图片。

  • 相关阅读:
    用Unity实现Flat Shading
    【问题证明】矩阵方程化为特征值方程求得的特征值为什么是全部特征值?不会丢解吗?
    php空合并运算符,三元运算符,PHP高级
    它来了,xhadmin多应用Saas框架正式发布!
    【Web】标准文档流
    《Jetpack Compose从入门到实战》第九章 Accompanist 与第三方组件库
    动物园
    【ROS2知识】将urdf用在Gazebo上
    【C语言】字符函数、字符串函数与内存函数
    DeFi明斯基时刻:压力测试与启示
  • 原文地址:https://blog.csdn.net/qq_41517071/article/details/127718556