简体   繁体   English

Matplotlib 子图标题、图标题格式

[英]Matplotlib subplot title, figure title formatting

How would I go about formatting the below pie chart subplots so that there is more white-space between the fig title and subplot titles.我将如何格式化下面的饼图子图,以便在无花果标题和子图标题之间有更多的空白。 Ideally the subplot titles would also be in closer vicinity to the actual pie chart itself.理想情况下,子图标题也应该更接近实际的饼图本身。

I can't seem to find anything in the docs which might enable this, but I'm new to matplotlib.我似乎无法在文档中找到任何可能启用此功能的内容,但我是 matplotlib 的新手。

matplotlib 图形

import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame, Series

m = {"Men" :  {"Yes": 2, "No": 8}}
w = {"Women": {"Yes": 3, "No": 7}}
data = {**m, **w}
df = DataFrame(data)

fig, axes = plt.subplots(1, len(df.columns))
fig.suptitle("Would you prefer to work from home?", fontsize=18)
logging.debug("fig.axes: {}".format(fig.axes))

for i, ax in enumerate(fig.axes):
    col = df.ix[:, i]
    ax = fig.axes[i]
    pcnt_col = col / col.sum() * 100
    ax.set_title("{} (n={})".format(pcnt_col.name, col.sum()))
    ax.pie(pcnt_col.values, labels=pcnt_col.index,
                    autopct="%1.1f%%", startangle=90)
    ax.axis("equal")
    plt.legend(loc="lower right", title="Answer", fancybox=True,
               ncol=1, shadow=True)
plt.show()

Use subplots_adjust to separate the two使用subplots_adjust将两者分开

plt.subplots_adjust(top=0.75)

import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame, Series

m = {"Men" :  {"Yes": 2, "No": 8}}
w = {"Women": {"Yes": 3, "No": 7}}
data = {**m, **w}
df = DataFrame(data)

fig, axes = plt.subplots(1, len(df.columns))
fig.suptitle("Would you prefer to work from home?", fontsize=18)
logging.debug("fig.axes: {}".format(fig.axes))

for i, ax in enumerate(fig.axes):
    col = df.ix[:, i]
    ax = fig.axes[i]
    pcnt_col = col / col.sum() * 100
    ax.set_title("{} (n={})".format(pcnt_col.name, col.sum()))
    ax.pie(pcnt_col.values, labels=pcnt_col.index,
                    autopct="%1.1f%%", startangle=90)
    ax.axis("equal")
    plt.legend(loc="lower right", title="Answer", fancybox=True,
               ncol=1, shadow=True)
plt.subplots_adjust(top=0.55)
plt.show()

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM