【问题标题】:How to remove polar gridlines and add major axis ticks如何删除极坐标网格线并添加主轴刻度
【发布时间】:2015-10-09 02:17:10
【问题描述】:

有人可以帮我删除在我的极坐标图中形成环的网格线吗?我想保留(甚至加粗)轴并为每个轴标签添加刻度。

这是我正在使用的代码、绘图图像以及我想要的轴图像。

import numpy as np
import pylab as pl
import matplotlib.pyplot as py

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 = [a if a <=360. else a - 360. for a in 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(self.angles, labels=titles, fontsize=12, weight="bold")

            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, 7), labels=label, angle=angle, fontsize=12)
                ax.spines["polar"].set_visible(False)
                ax.set_ylim(0, 6)  

    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)

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

titles = [
"Canada", "Australia",
"New Zealand", "Japan", "China", "USA", "Mexico", "Finland", "Doha" 
]

labels = [
list("abcde"), list("12345"), list("uvwxy"), 
[" ", " ", "$156", "$158", "$160"],
list("jklmn"), list("asdfg"), list("qwert"), [" ", "4.3", "4.4", "4.5", "4.6"], list("abcde")
]

radar = Radar(fig, titles, labels)
radar.plot([1, 3, 2, 5, 4, 5, 3, 3, 2],  "--", lw=1, color="b", alpha=.5, label="USA 2014")
radar.plot([2.3, 2, 3, 3, 2, 3, 2, 4, 2],"-", lw=1, color="r", alpha=.5, label="2014")
radar.plot([3, 4, 3, 4, 2, 2, 1, 3, 2], "-", lw=1, color="g", alpha=.5, label="2013")
radar.plot([4.5, 5, 4, 5, 3, 3, 4, 4, 2], "-", lw=1, color="y", alpha=.5, label="2012")

radar.ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.10),
      fancybox=True, shadow=True, ncol=4)

fig = py.gcf()
fig.set_size_inches(6, 10, forward=True)
fig.savefig('test2png.png', dpi=100, bbox_inches="tight", pad_inches=1)

想要的外观:

目前的样子:

【问题讨论】:

    标签: python-3.x matplotlib gridlines radar-chart multiple-axes


    【解决方案1】:

    您只需将yaxis.grid 设置为False。例如,如果您设置:

    self.ax.yaxis.grid(False)
    

    在你设置self.ax.set_thetagrids(...)之后的行中,圆形网格线被移除。

    【讨论】:

    • 再次感谢@tom。你杀了它!有没有办法为每个轴单位沿每个轴创建刻度(类似于“所需外观”图像)?
    • 对不起,我在那个地方画了一个空白。也许问一个新问题,其他人可能比我有更好的主意!
    • 别担心,@tom!非常感谢。你能帮我处理轴标签填充吗?我尝试使用 ax.set_thetagrids(thetaticks, frac=1.3) 并调整 frac,但它不会均匀地间隔它们。另外,有没有办法将轴标签放在两条线上?例如,将 New 放在新西兰之上。再次感谢。你是个魔术师。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    相关资源
    最近更新 更多