首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >极点X标记位置

极点X标记位置
EN

Stack Overflow用户
提问于 2021-02-02 10:21:58
回答 1查看 106关注 0票数 4

我有一个函数,它用matplotlib生成极坐标图。

代码语言:javascript
复制
from math import pi

import matplotlib as mpl
import matplotlib.pyplot as plt

first_arg = {
    'Introversion': 17, 'Intuition': 34, 'Feeling': 29, 'Perceiving': 18,
    'Extraversion': 27, 'Sensing': 25, 'Thinking': 23, 'Judging': 16
}
second_arg =  {
    'Introversion': 16, 'Intuition': 25, 'Feeling': 31, 'Perceiving': 15,
    'Extraversion': 22, 'Sensing': 29, 'Thinking': 23, 'Judging': 23
}


def plot_scales_chart(*args):
    scales = [
        'Introversion', 'Intuition', 'Feeling', 'Perceiving',
        'Extraversion', 'Sensing', 'Thinking', 'Judging'
    ]
    angles = [n / float(len(scales)) * 2 * pi for n in range(len(scales))]
    angles += angles[:1]

    mpl.use('agg')

    ax = plt.subplot(polar=True)

    ax.set_theta_offset(pi / 2)
    ax.set_theta_direction(-1)

    plt.xticks(angles[:-1], scales)

    ax.set_rlabel_position(0)
    plt.yticks([15, 25], ["15", "25"], color="grey", size=8)
    plt.ylim(0, 35)

    colors = ['#5159be', '#86e5c7']

    for i, arg in enumerate(args):
        values = []
        for scale in scales:
            values.append(arg[scale])
        values += values[:1]
        ax.plot(angles, values, alpha=0.7, color=colors[i], linewidth=0, linestyle='solid')
        ax.fill(angles, values, colors[i], alpha=0.7)
    
    plt.savefig('chart.png')

我想移动X轴标签,以免横过圆圈。

如何设置标签的位置,特别是一个比例尺的,还是可以将的所有标签移离中心?那里的最佳做法是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-10-13 00:41:31

您可以使用参数添加填充以将标签从中心移开。在ax.tick_params(axis='x', which='major', pad=15)中设置xticks之后添加行plt.xticks()就可以了。

代码语言:javascript
复制
from math import pi

import matplotlib as mpl
import matplotlib.pyplot as plt

first_arg = {
    'Introversion': 17, 'Intuition': 34, 'Feeling': 29, 'Perceiving': 18,
    'Extraversion': 27, 'Sensing': 25, 'Thinking': 23, 'Judging': 16
}
second_arg =  {
    'Introversion': 16, 'Intuition': 25, 'Feeling': 31, 'Perceiving': 15,
    'Extraversion': 22, 'Sensing': 29, 'Thinking': 23, 'Judging': 23
}


def plot_scales_chart(*args):
    scales = [
        'Introversion', 'Intuition', 'Feeling', 'Perceiving',
        'Extraversion', 'Sensing', 'Thinking', 'Judging'
    ]
    angles = [n / float(len(scales)) * 2 * pi for n in range(len(scales))]
    angles += angles[:1]

    mpl.use('agg')

    ax = plt.subplot(polar=True)

    ax.set_theta_offset(pi / 2)
    ax.set_theta_direction(-1)

    plt.xticks(angles[:-1], scales)
    ax.tick_params(axis='x', which='major', pad=15)

    ax.set_rlabel_position(0)
    plt.yticks([15, 25], ["15", "25"], color="grey", size=8)
    plt.ylim(0, 35)

    colors = ['#5159be', '#86e5c7']

    for i, arg in enumerate(args):
        values = []
        for scale in scales:
            values.append(arg[scale])
        values += values[:1]
        ax.plot(angles, values, alpha=0.7, color=colors[i], linewidth=0, linestyle='solid')
        ax.fill(angles, values, colors[i], alpha=0.7)

    plt.savefig('chart.png')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66007742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档