雷达图—复制可用+底层原理讲解——python科研做图系列之雷达图

文章目录

  • 参考资料
    • 重点参考知乎一步一步的讲解
  • matplotlib库画的
  • 复现一个 pyecharts的雷达图
  • 尝试在上面的基础上,把pyecharts 导出存为一般的png图
  • 尝试在上面的基础上,把pyecharts 导出存为一般的矢量图
  • 用pygal画雷达图

参考资料

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

  1. 参考知乎

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

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

matplotlib库画的

参考

复现一个 pyecharts的雷达图

复现一下5,并详细讲解一下代码吧。
2022年11月12日09:12:03。
复现过程中 特别坑的bug记录
雷达图—复制可用+底层原理讲解——python科研做图系列之雷达图_第1张图片

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

然后 在想 昨天 晚上自己 是 成功运行过的哇,还把截图发给导师了,
仔细会议 自己昨天晚上成功复现的步骤,
我记得有安装 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")

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

参考

也不复杂就是
把下载好的 phantomjs 的路径加到系统变量就可以了。
雷达图—复制可用+底层原理讲解——python科研做图系列之雷达图_第2张图片

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

雷达图—复制可用+底层原理讲解——python科研做图系列之雷达图_第3张图片
买了本书 但是 还在路上。
先用其他方法来画图把,其实这个网页版的图还不错。

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

参考
雷达图—复制可用+底层原理讲解——python科研做图系列之雷达图_第4张图片
下载了个寂寞

先不下载了

用pygal画雷达图

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

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

你可能感兴趣的:(python,开发语言,matplotlib)