Yellowbrick:在 Yellowbrick 生成的图表上增加字体大小
Yellowbrick: Increasing font size on Yellowbrick generated charts
有没有办法增加 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 object。网格中间的标签是文本 objects,所以我遍历所有文本 objects,将它们的大小设置为 12pt。如果需要,此技术可用于在显示之前修改任何可视元素(通常我使用它在可视化上添加注释)。
但是请注意,show
调用了一个 finalize
函数,因此在调用 show
后应修改标题、轴标签等内容,或者通过 short-circuiting show
通过调用 finalize
然后 plt.show()
。
此特定代码仅适用于 ConfusionMatrix
,但我在 Yellowbrick 库中添加了一个 issue,希望将来能使它更容易或至少更易读。
有没有办法增加 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 object。网格中间的标签是文本 objects,所以我遍历所有文本 objects,将它们的大小设置为 12pt。如果需要,此技术可用于在显示之前修改任何可视元素(通常我使用它在可视化上添加注释)。
但是请注意,show
调用了一个 finalize
函数,因此在调用 show
后应修改标题、轴标签等内容,或者通过 short-circuiting show
通过调用 finalize
然后 plt.show()
。
此特定代码仅适用于 ConfusionMatrix
,但我在 Yellowbrick 库中添加了一个 issue,希望将来能使它更容易或至少更易读。