Plot a Single XGBoost Decision Tree

You can try using the to_graphviz method instead - for me it results in a much more clear picture.

xgb.to_graphviz(xg_reg, num_trees=0, rankdir='LR')

However, most likely you will have issues with the size of that output.

In this case follow this: How can I specify the figsize of a graphviz representation of a decision tree?


I found this workaround on github, which also gives better images with the drawback that you have to open the .png file after.

xgb.plot_tree(bst, num_trees=2)
fig = matplotlib.pyplot.gcf()
fig.set_size_inches(150, 100)
fig.savefig('tree.png')

I had the same problem recently and the only way I found is by trying diffent figure size (it can still be bluery with big figure. For exemple, to plot the 4th tree, use:

fig, ax = plt.subplots(figsize=(30, 30))
xgb.plot_tree(model, num_trees=4, ax=ax)
plt.show()

To save it, you can do

plt.savefig("temp.pdf")

Also, each tree seperates two classes so you have as many tree as class.


To add to Serk's answer, you can also resize the figure before displaying it:

# ...
plot_tree(model)
plt.gcf().set_size_inches(18.5, 10.5)
plt.show()