有没有办法在Yellowbrick生成的图表上增加字体大小?我觉得很难阅读文字。我在文档中找不到任何内容。
我在Jupyter Notebook中使用Python 3.6,Yellowbrick 0.5。
最佳答案
更新: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()
这将导致生成以下图像:
您可以在
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()
这将产生以下图像,其内部带有稍大的字体:
这里发生的事情是,我直接访问包含图形所有元素的可视化工具上的matplotlib Axes对象。网格中间的标签是Text对象,因此我遍历所有将其大小设置为12pt的文本对象。如果需要,可以使用此技术在显示之前修改任何视觉元素(通常,我使用它在可视化效果上放置注释)。
但是请注意,
show
会调用finalize
函数,因此在调用show
之后应修改标题,轴标签等某些内容,或者通过调用show
来短路finalize
plt.show()
。这个特定的代码仅与
ConfusionMatrix
一起使用,但是我在Yellowbrick库中添加了issue,希望将来可以更轻松或至少更具可读性。