首页 > 解决方案 > 更改马赛克图的默认颜色

问题描述

我想更改此马赛克图的颜色以使其可在黑白中打印,但找不到更改此参数的方法

马赛克图

from statsmodels.graphics.mosaicplot import mosaic
import matplotlib.pyplot as plt
import pandas

x = ['yes', 'yes', 'yes', 'yes', 'yes', 'yes', 'yes']
y = ['yes', 'yes', 'yes', 'yes', 'no', 'no', 'no']
data = pandas.DataFrame({'x': x, 'y': y})
mosaic(data, ['x', 'y'])

plt.savefig("mosaicplot.pdf", figsize=[10,5])
plt.show()

这是我实际拥有的:我看到我可以在此链接上使用马赛克(属性)更改颜色:http: //www.statsmodels.org/stable/generated/statsmodels.graphics.mosaicplot.mosaic.html 但我只能给 2 种不同的颜色,我需要为每个图使用不同的颜色,如下所示: 在此处输入图像描述

标签: pythonpandasmatplotlibmosaic-plot

解决方案


该文档提到了一个properties=论点:

属性函数(键)-> dict,可选

一个函数,它为马赛克中的每个瓦片获取瓦片的键并返回生成的矩形属性的字典,如颜色、阴影或类似。将为尚未定义颜色的键提供默认属性集,并将使用颜色变化来帮助在视觉上区分各种类别。它应该返回 None 以指示它应该使用磁贴的默认属性。可以传递每个键的属性字典,它会在内部转换为正确的函数

因此,您可以传递一个函数(参见上面链接中的示例)或更简单的字典properties=来更改矩形的外观:

x = ['yes', 'yes', 'yes', 'yes', 'yes', 'yes', 'yes']
y = ['yes', 'yes', 'yes', 'yes', 'no', 'no', 'no']
data = pandas.DataFrame({'x': x, 'y': y})

props = {}
props[('yes', 'yes')] = {'color': 'xkcd:orange'}
props[('yes','no')] = {'facecolor': 'xkcd:pale blue',
                       'edgecolor':'xkcd:light grey',
                       'hatch':'o'}
data = pandas.DataFrame({'x': x, 'y': y})
mosaic(data, ['x', 'y'], properties=props)

在此处输入图像描述

据我所知,任何接受的论点Rectangle都可以在这本字典中传递。


推荐阅读