簡體   English   中英

Matplotlib 子圖標題、圖標題格式

[英]Matplotlib subplot title, figure title formatting

我將如何格式化下面的餅圖子圖,以便在無花果標題和子圖標題之間有更多的空白。 理想情況下,子圖標題也應該更接近實際的餅圖本身。

我似乎無法在文檔中找到任何可能啟用此功能的內容,但我是 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()

使用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