PYTHON MATPLOTLIB画雷达图的例子

 我来答
wqlsw123
2015-03-24 · 超过14用户采纳过TA的回答
知道答主
回答量:37
采纳率:100%
帮助的人:32.1万
展开全部

import numpy as np

import pylab as pl


class Radar(object):


    def __init__(self, fig, titles, labels, rect=None):

        if rect is None:

            rect = [0.05, 0.05, 0.95, 0.95]


        self.n = len(titles)

        self.angles = np.arange(90, 90+360, 360.0/self.n)

        self.axes = [fig.add_axes(rect, projection="polar", label="axes%d" % i) 

                         for i in range(self.n)]


        self.ax = self.axes[0]

        self.ax.set_thetagrids(angles, labels=titles, fontsize=14)


        for ax in self.axes[1:]:

            ax.patch.set_visible(False)

            ax.grid("off")

            ax.xaxis.set_visible(False)


        for ax, angle, label in zip(self.axes, self.angles, labels):

            ax.set_rgrids(range(1, 6), angle=angle, labels=label)

            ax.spines["polar"].set_visible(False)

            ax.set_ylim(0, 5)


    def plot(self, values, *args, **kw):

        angle = np.deg2rad(np.r_[self.angles, self.angles[0]])

        values = np.r_[values, values[0]]

        self.ax.plot(angle, values, *args, **kw)



titles = list("ABCDE")


labels = [

    list("abcde"), list("12345"), list("uvwxy"), 

    ["one", "two", "three", "four", "five"],

    list("jklmn")

]


fig = pl.figure(figsize=(6, 6))


titles = list("ABCDE")


labels = [

    list("abcde"), list("12345"), list("uvwxy"), 

    ["one", "two", "three", "four", "five"],

    list("jklmn")

]


radar = Radar(fig, titles, labels)

radar.plot([1, 3, 2, 5, 4],  "-", lw=2, color="b", alpha=0.4, label="first")

radar.plot([2.3, 2, 3, 3, 2],"-", lw=2, color="r", alpha=0.4, label="second")

radar.plot([3, 4, 3, 4, 2], "-", lw=2, color="g", alpha=0.4, label="third")

radar.ax.legend()

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式