figsize 可以设置标准的 matplotlib 方式:fig, ax = plt.subplots(figsize=....))
并将 传递ax
给mosaic()
函数。
颜色可以通过properties=
参数改变。这是一个函数,它获取一个键作为输入(例如('cat', 'female')
)并输出具有Rectangle
诸如 facecolor、alpha、hatch、linestyle 等属性的字典。下面的示例将所有猫涂成绿色蓝色,将所有狗涂成棕色。为了区分男性和女性,可以将孵化或 alpha 设置为不同。
标题可以通过title=
参数传递。该示例使用带有猫百分比的 f 字符串。
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.graphics.mosaicplot import mosaic
gender = ['male', 'male', 'male', 'female', 'female', 'female']
pet = ['cat', 'dog', 'dog', 'cat', 'dog', 'cat']
third_col = [2, 3, 4, 5, 6, 7]
data = pd.DataFrame({'gender': gender, 'pet': pet, 'third': third_col})
percent_cats = f"cats: {100 * len(data[data['pet'] == 'cat']) / len(data):.1f} %"
props = lambda key: {'color': 'turquoise' if 'cat' in key else 'sienna'}
fig, ax = plt.subplots(figsize=(12, 4))
mosaic(data, ['pet', 'gender'], gap=0.06, title=percent_cats, properties=props, ax=ax)
plt.show()
这是另一个示例,男性和女性使用不同的颜色,使用的列的顺序发生了变化,并使第一个布局方向水平。
percent_3rd_col = 100 * data[data['gender'] == 'female']['third'].sum() / data['third'].sum()
title = f"percent female: {percent_3rd_col:.1f} %"
props = lambda key: {'color': 'fuchsia' if 'female' in key else 'deepskyblue'}
mosaic(data, ['gender', 'pet'], horizontal=False, gap=0.06, title=title, properties=props, ax=ax)