How to get high resolution images with PyDotPlus and Graphviz?
I Need to export some high-resolution visualization of decision trees. Graphviz works perfectly to create the images, and I used PyDotPlus to tweak the colors, but I couldn't find a way to export them in high resolution (at least FullHD).
I tried this, but apparently after I use PyDotPlus the object is no longer a dot-type, so simple shell command did not work. Here is the code.
from sklearn.datasets import load_iris
import pydotplus
import numpy
iris = load_iris()
FEATURES = ['Sepal length (cm)','Sepal width (cm)','Petal length (cm)','Petal width (cm)']
CLASS = ['Iris setosa','Iris versicolor','Iris virginica']
# Model
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(max_depth=1)
# Train
model.fit(iris.data, iris.target)
from sklearn.tree import export_graphviz
dot_data = export_graphviz(model,
feature_names=FEATURES,
out_file=None,
class_names = CLASS,
filled=True,
proportion = False,
precision = 2,
rounded=True,
)
graph = pydotplus.graph_from_dot_data(dot_data)
nodes = graph.get_node_list()
colors = ('lightskyblue3', 'green2', 'lightcoral', 'white')
for node in nodes:
if node.get_name() not in ('node', 'edge'):
values = model.tree_.value[int(node.get_name())][0]
#color only nodes where only one class is present
if max(values) == sum(values):
node.set_fillcolor(colors[numpy.argmax(values)])
#mixed nodes get the default color
else:
node.set_fillcolor(colors[-1])
graph.write_png('Tree.png')
# Display in jupyter notebook
from IPython.display import Image
Image(filename = 'Tree.png')
I though I could tweak the function "write_png", but I did not find any documentation about it. When I use "help", all I get is
Help on function <lambda> in module pydotplus.graphviz:
<lambda> lambda path, f='png', prog='dot'
Refer to the docstring accompanying the'write' method for more information.
Sorry, I'm aware it seems very naive, but I just could not get around this. The produced images are good for visualization, but not for a paper. Any tips? Thanks in advance.
python resolution graphviz pydot
add a comment |
I Need to export some high-resolution visualization of decision trees. Graphviz works perfectly to create the images, and I used PyDotPlus to tweak the colors, but I couldn't find a way to export them in high resolution (at least FullHD).
I tried this, but apparently after I use PyDotPlus the object is no longer a dot-type, so simple shell command did not work. Here is the code.
from sklearn.datasets import load_iris
import pydotplus
import numpy
iris = load_iris()
FEATURES = ['Sepal length (cm)','Sepal width (cm)','Petal length (cm)','Petal width (cm)']
CLASS = ['Iris setosa','Iris versicolor','Iris virginica']
# Model
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(max_depth=1)
# Train
model.fit(iris.data, iris.target)
from sklearn.tree import export_graphviz
dot_data = export_graphviz(model,
feature_names=FEATURES,
out_file=None,
class_names = CLASS,
filled=True,
proportion = False,
precision = 2,
rounded=True,
)
graph = pydotplus.graph_from_dot_data(dot_data)
nodes = graph.get_node_list()
colors = ('lightskyblue3', 'green2', 'lightcoral', 'white')
for node in nodes:
if node.get_name() not in ('node', 'edge'):
values = model.tree_.value[int(node.get_name())][0]
#color only nodes where only one class is present
if max(values) == sum(values):
node.set_fillcolor(colors[numpy.argmax(values)])
#mixed nodes get the default color
else:
node.set_fillcolor(colors[-1])
graph.write_png('Tree.png')
# Display in jupyter notebook
from IPython.display import Image
Image(filename = 'Tree.png')
I though I could tweak the function "write_png", but I did not find any documentation about it. When I use "help", all I get is
Help on function <lambda> in module pydotplus.graphviz:
<lambda> lambda path, f='png', prog='dot'
Refer to the docstring accompanying the'write' method for more information.
Sorry, I'm aware it seems very naive, but I just could not get around this. The produced images are good for visualization, but not for a paper. Any tips? Thanks in advance.
python resolution graphviz pydot
add a comment |
I Need to export some high-resolution visualization of decision trees. Graphviz works perfectly to create the images, and I used PyDotPlus to tweak the colors, but I couldn't find a way to export them in high resolution (at least FullHD).
I tried this, but apparently after I use PyDotPlus the object is no longer a dot-type, so simple shell command did not work. Here is the code.
from sklearn.datasets import load_iris
import pydotplus
import numpy
iris = load_iris()
FEATURES = ['Sepal length (cm)','Sepal width (cm)','Petal length (cm)','Petal width (cm)']
CLASS = ['Iris setosa','Iris versicolor','Iris virginica']
# Model
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(max_depth=1)
# Train
model.fit(iris.data, iris.target)
from sklearn.tree import export_graphviz
dot_data = export_graphviz(model,
feature_names=FEATURES,
out_file=None,
class_names = CLASS,
filled=True,
proportion = False,
precision = 2,
rounded=True,
)
graph = pydotplus.graph_from_dot_data(dot_data)
nodes = graph.get_node_list()
colors = ('lightskyblue3', 'green2', 'lightcoral', 'white')
for node in nodes:
if node.get_name() not in ('node', 'edge'):
values = model.tree_.value[int(node.get_name())][0]
#color only nodes where only one class is present
if max(values) == sum(values):
node.set_fillcolor(colors[numpy.argmax(values)])
#mixed nodes get the default color
else:
node.set_fillcolor(colors[-1])
graph.write_png('Tree.png')
# Display in jupyter notebook
from IPython.display import Image
Image(filename = 'Tree.png')
I though I could tweak the function "write_png", but I did not find any documentation about it. When I use "help", all I get is
Help on function <lambda> in module pydotplus.graphviz:
<lambda> lambda path, f='png', prog='dot'
Refer to the docstring accompanying the'write' method for more information.
Sorry, I'm aware it seems very naive, but I just could not get around this. The produced images are good for visualization, but not for a paper. Any tips? Thanks in advance.
python resolution graphviz pydot
I Need to export some high-resolution visualization of decision trees. Graphviz works perfectly to create the images, and I used PyDotPlus to tweak the colors, but I couldn't find a way to export them in high resolution (at least FullHD).
I tried this, but apparently after I use PyDotPlus the object is no longer a dot-type, so simple shell command did not work. Here is the code.
from sklearn.datasets import load_iris
import pydotplus
import numpy
iris = load_iris()
FEATURES = ['Sepal length (cm)','Sepal width (cm)','Petal length (cm)','Petal width (cm)']
CLASS = ['Iris setosa','Iris versicolor','Iris virginica']
# Model
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(max_depth=1)
# Train
model.fit(iris.data, iris.target)
from sklearn.tree import export_graphviz
dot_data = export_graphviz(model,
feature_names=FEATURES,
out_file=None,
class_names = CLASS,
filled=True,
proportion = False,
precision = 2,
rounded=True,
)
graph = pydotplus.graph_from_dot_data(dot_data)
nodes = graph.get_node_list()
colors = ('lightskyblue3', 'green2', 'lightcoral', 'white')
for node in nodes:
if node.get_name() not in ('node', 'edge'):
values = model.tree_.value[int(node.get_name())][0]
#color only nodes where only one class is present
if max(values) == sum(values):
node.set_fillcolor(colors[numpy.argmax(values)])
#mixed nodes get the default color
else:
node.set_fillcolor(colors[-1])
graph.write_png('Tree.png')
# Display in jupyter notebook
from IPython.display import Image
Image(filename = 'Tree.png')
I though I could tweak the function "write_png", but I did not find any documentation about it. When I use "help", all I get is
Help on function <lambda> in module pydotplus.graphviz:
<lambda> lambda path, f='png', prog='dot'
Refer to the docstring accompanying the'write' method for more information.
Sorry, I'm aware it seems very naive, but I just could not get around this. The produced images are good for visualization, but not for a paper. Any tips? Thanks in advance.
python resolution graphviz pydot
python resolution graphviz pydot
asked Dec 30 '18 at 17:22
AlfamasterAlfamaster
62
62
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53979797%2fhow-to-get-high-resolution-images-with-pydotplus-and-graphviz%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53979797%2fhow-to-get-high-resolution-images-with-pydotplus-and-graphviz%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown