gpt4 book ai didi

python-3.x - Matplotlib:极坐标轴刻度标签位置

转载 作者:行者123 更新时间:2023-12-02 04:17:02 25 4
gpt4 key购买 nike

如何沿每个轴移动标签以使它们都可读?例如,如何将“$156、$158、$160”移出轴?

这篇文章展示了如果您只有一个轴,如何移动这些标签,但是如果像我这样有多个轴,您会怎么做? Move radial tick labels on a polar plot in matplotlib

Current Polar Plot

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", color="black")

for ax in self.axes[1:]:
ax.patch.set_visible(False)
ax.grid("off")
ax.xaxis.set_visible(False)
self.ax.yaxis.grid(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)
ax.xaxis.grid(True,color='black',linestyle='-')

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)

最佳答案

一种选择是向标签位置添加恒定的偏移量。您可以通过为每个轴获取当前位置 (ax.get_rlabel_position()),然后向其添加一个常量 (ax.set_rlabel_position())

例如,要为所有标签添加 7 度,请在 ax.xaxis.grid 行之后添加此内容

pos=ax.get_rlabel_position()
ax.set_rlabel_position(pos+7)

但是,我不认为这是一个特别好看的解决方案。它适用于 160 美元等标签,但其他标签看起来不太好。

enter image description here

也许其他人有更优雅的解决方案。

关于python-3.x - Matplotlib:极坐标轴刻度标签位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33072450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com