有没有办法在Yellowbrick生成的图表上增加字体大小?我觉得很难阅读文字。我在文档中找不到任何内容。

我在Jupyter Notebook中使用Python 3.6,Yellowbrick 0.5。

python - Yellowbrick:在Yellowbrick生成的图表上增加字体大小-LMLPHP

最佳答案

更新:Yellowbrick API现在使用viz.show而不是viz.poof

Yellowbrick包装了matplotlib以便产生可视化效果,因此您可以通过直接调用matplotlib来影响图形的所有视觉设置。我发现最简单的方法是访问Visualizer.ax属性并直接在其中设置内容,当然,您当然可以直接使用plt来管理全局图形。

这是一些产生与您相似的示例的代码:

import pandas as pd

from yellowbrick.classifier import ConfusionMatrix
from sklearn.ensemble import AdaBoostClassifier
from sklearn.model_selection import train_test_split as tts

data = pd.read_csv('examples/data/occupancy/occupancy.csv')

features = ["temperature", "relative humidity", "light", "C02", "humidity"]

# Extract the numpy arrays from the data frame
X = data[features].as_matrix()
y = data.occupancy.as_matrix()

X_train, X_test, y_train, y_test = tts(X, y, test_size=0.2)

clf = AdaBoostClassifier()
viz = ConfusionMatrix(clf)

viz.fit(X_train, y_train)
viz.score(X_test, y_test)
viz.show()


这将导致生成以下图像:

python - Yellowbrick:在Yellowbrick生成的图表上增加字体大小-LMLPHP

您可以在score之后和show之前开始管理图形,如下所示:

viz.fit(X_train, y_train)
viz.score(X_test, y_test)

for label in viz.ax.texts:
    label.set_size(12)

viz.show()


这将产生以下图像,其内部带有稍大的字体:

python - Yellowbrick:在Yellowbrick生成的图表上增加字体大小-LMLPHP

这里发生的事情是,我直接访问包含图形所有元素的可视化工具上的matplotlib Axes对象。网格中间的标签是Text对象,因此我遍历所有将其大小设置为12pt的文本对象。如果需要,可以使用此技术在显示之前修改任何视觉元素(通常,我使用它在可视化效果上放置注释)。

但是请注意,show会调用finalize函数,因此在调用show之后应修改标题,轴标签等某些内容,或者通过调用show来短路finalize plt.show()

这个特定的代码仅与ConfusionMatrix一起使用,但是我在Yellowbrick库中添加了issue,希望将来可以更轻松或至少更具可读性。

10-06 05:19