How to display python matplotlib graphs (png) with Chaquopy in Android Studio
So I use chaquopy to get simple python programs functioning in an old (jelly bean) tablet (I replace the example console app's main.py in the src directory). Not bad for a beginner's start and I'm very happy.
But now for a test I try to display a matplotlib graph like this:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
def main():
image = mpimg.imread("/storage/emulated/0/Documents/test.png")
plt.imshow(image)
plt.show()
The matplotlib library was installed from within android studio (albeit with a few missing elements, manual pip3 install and usage of local files). Now the build and program finish without errors, but there is no graph. Installation of pillow and use of other graph types no avail.
Can this be handled in python, or is a dive into android studio / java required?
Thanks for any advice
android python matplotlib chaquopy
add a comment |
So I use chaquopy to get simple python programs functioning in an old (jelly bean) tablet (I replace the example console app's main.py in the src directory). Not bad for a beginner's start and I'm very happy.
But now for a test I try to display a matplotlib graph like this:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
def main():
image = mpimg.imread("/storage/emulated/0/Documents/test.png")
plt.imshow(image)
plt.show()
The matplotlib library was installed from within android studio (albeit with a few missing elements, manual pip3 install and usage of local files). Now the build and program finish without errors, but there is no graph. Installation of pillow and use of other graph types no avail.
Can this be handled in python, or is a dive into android studio / java required?
Thanks for any advice
android python matplotlib chaquopy
Installing matplotlib should be easy, so I'm concerned by "a few missing elements, manual pip3 install and usage of local files". If you had any problems here, please report them at the Chaquopy GitHub page.
– mhsmith
Nov 14 '18 at 15:39
I unfortunately do not have the logs anymore, but I remember that even after a manual pip3 install of matplotlib, it was still necessary to install freetype (a dev version was suggested). So I now have both libfreetype6 and libfreetype6-dev installed.
– Peter
Nov 20 '18 at 15:58
Chaquopy comes with its own copy of pip which installs into an isolated environment, so what you have installed on the build machine should make no difference.
– mhsmith
Nov 21 '18 at 13:16
add a comment |
So I use chaquopy to get simple python programs functioning in an old (jelly bean) tablet (I replace the example console app's main.py in the src directory). Not bad for a beginner's start and I'm very happy.
But now for a test I try to display a matplotlib graph like this:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
def main():
image = mpimg.imread("/storage/emulated/0/Documents/test.png")
plt.imshow(image)
plt.show()
The matplotlib library was installed from within android studio (albeit with a few missing elements, manual pip3 install and usage of local files). Now the build and program finish without errors, but there is no graph. Installation of pillow and use of other graph types no avail.
Can this be handled in python, or is a dive into android studio / java required?
Thanks for any advice
android python matplotlib chaquopy
So I use chaquopy to get simple python programs functioning in an old (jelly bean) tablet (I replace the example console app's main.py in the src directory). Not bad for a beginner's start and I'm very happy.
But now for a test I try to display a matplotlib graph like this:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
def main():
image = mpimg.imread("/storage/emulated/0/Documents/test.png")
plt.imshow(image)
plt.show()
The matplotlib library was installed from within android studio (albeit with a few missing elements, manual pip3 install and usage of local files). Now the build and program finish without errors, but there is no graph. Installation of pillow and use of other graph types no avail.
Can this be handled in python, or is a dive into android studio / java required?
Thanks for any advice
android python matplotlib chaquopy
android python matplotlib chaquopy
edited Nov 14 '18 at 15:40
mhsmith
2,71812143
2,71812143
asked Nov 13 '18 at 16:28
PeterPeter
113
113
Installing matplotlib should be easy, so I'm concerned by "a few missing elements, manual pip3 install and usage of local files". If you had any problems here, please report them at the Chaquopy GitHub page.
– mhsmith
Nov 14 '18 at 15:39
I unfortunately do not have the logs anymore, but I remember that even after a manual pip3 install of matplotlib, it was still necessary to install freetype (a dev version was suggested). So I now have both libfreetype6 and libfreetype6-dev installed.
– Peter
Nov 20 '18 at 15:58
Chaquopy comes with its own copy of pip which installs into an isolated environment, so what you have installed on the build machine should make no difference.
– mhsmith
Nov 21 '18 at 13:16
add a comment |
Installing matplotlib should be easy, so I'm concerned by "a few missing elements, manual pip3 install and usage of local files". If you had any problems here, please report them at the Chaquopy GitHub page.
– mhsmith
Nov 14 '18 at 15:39
I unfortunately do not have the logs anymore, but I remember that even after a manual pip3 install of matplotlib, it was still necessary to install freetype (a dev version was suggested). So I now have both libfreetype6 and libfreetype6-dev installed.
– Peter
Nov 20 '18 at 15:58
Chaquopy comes with its own copy of pip which installs into an isolated environment, so what you have installed on the build machine should make no difference.
– mhsmith
Nov 21 '18 at 13:16
Installing matplotlib should be easy, so I'm concerned by "a few missing elements, manual pip3 install and usage of local files". If you had any problems here, please report them at the Chaquopy GitHub page.
– mhsmith
Nov 14 '18 at 15:39
Installing matplotlib should be easy, so I'm concerned by "a few missing elements, manual pip3 install and usage of local files". If you had any problems here, please report them at the Chaquopy GitHub page.
– mhsmith
Nov 14 '18 at 15:39
I unfortunately do not have the logs anymore, but I remember that even after a manual pip3 install of matplotlib, it was still necessary to install freetype (a dev version was suggested). So I now have both libfreetype6 and libfreetype6-dev installed.
– Peter
Nov 20 '18 at 15:58
I unfortunately do not have the logs anymore, but I remember that even after a manual pip3 install of matplotlib, it was still necessary to install freetype (a dev version was suggested). So I now have both libfreetype6 and libfreetype6-dev installed.
– Peter
Nov 20 '18 at 15:58
Chaquopy comes with its own copy of pip which installs into an isolated environment, so what you have installed on the build machine should make no difference.
– mhsmith
Nov 21 '18 at 13:16
Chaquopy comes with its own copy of pip which installs into an isolated environment, so what you have installed on the build machine should make no difference.
– mhsmith
Nov 21 '18 at 13:16
add a comment |
1 Answer
1
active
oldest
votes
You'll have to include an ImageView in your app's layout, and then load the image file into it, as in this answer.
For an image which is generated dynamically by matplotlib, either save it to a file and then load from that file, or save it to a bytes object like this:
import io
bio = io.BytesIO()
plt.savefig(bio, format="png")
b = bio.getvalue()
... and then load that bytes object into the ImageView like in this app.
OK, I managed to show a png graph using imagegeview. Thank you very much. I did not test the bytes object yet, but it will also show just an image. What I now realize is that I wanted to make use of the matplotlib plt.show() function, because then the graph is not passively displayed, but shown with zoom/pan functions. Would that be possible?
– Peter
Nov 20 '18 at 15:40
@Peter: It's not currently possible: it would require someone to write an Android front end for matplotlib.
– mhsmith
Nov 21 '18 at 13:18
add a comment |
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%2f53285429%2fhow-to-display-python-matplotlib-graphs-png-with-chaquopy-in-android-studio%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You'll have to include an ImageView in your app's layout, and then load the image file into it, as in this answer.
For an image which is generated dynamically by matplotlib, either save it to a file and then load from that file, or save it to a bytes object like this:
import io
bio = io.BytesIO()
plt.savefig(bio, format="png")
b = bio.getvalue()
... and then load that bytes object into the ImageView like in this app.
OK, I managed to show a png graph using imagegeview. Thank you very much. I did not test the bytes object yet, but it will also show just an image. What I now realize is that I wanted to make use of the matplotlib plt.show() function, because then the graph is not passively displayed, but shown with zoom/pan functions. Would that be possible?
– Peter
Nov 20 '18 at 15:40
@Peter: It's not currently possible: it would require someone to write an Android front end for matplotlib.
– mhsmith
Nov 21 '18 at 13:18
add a comment |
You'll have to include an ImageView in your app's layout, and then load the image file into it, as in this answer.
For an image which is generated dynamically by matplotlib, either save it to a file and then load from that file, or save it to a bytes object like this:
import io
bio = io.BytesIO()
plt.savefig(bio, format="png")
b = bio.getvalue()
... and then load that bytes object into the ImageView like in this app.
OK, I managed to show a png graph using imagegeview. Thank you very much. I did not test the bytes object yet, but it will also show just an image. What I now realize is that I wanted to make use of the matplotlib plt.show() function, because then the graph is not passively displayed, but shown with zoom/pan functions. Would that be possible?
– Peter
Nov 20 '18 at 15:40
@Peter: It's not currently possible: it would require someone to write an Android front end for matplotlib.
– mhsmith
Nov 21 '18 at 13:18
add a comment |
You'll have to include an ImageView in your app's layout, and then load the image file into it, as in this answer.
For an image which is generated dynamically by matplotlib, either save it to a file and then load from that file, or save it to a bytes object like this:
import io
bio = io.BytesIO()
plt.savefig(bio, format="png")
b = bio.getvalue()
... and then load that bytes object into the ImageView like in this app.
You'll have to include an ImageView in your app's layout, and then load the image file into it, as in this answer.
For an image which is generated dynamically by matplotlib, either save it to a file and then load from that file, or save it to a bytes object like this:
import io
bio = io.BytesIO()
plt.savefig(bio, format="png")
b = bio.getvalue()
... and then load that bytes object into the ImageView like in this app.
answered Nov 14 '18 at 15:38
mhsmithmhsmith
2,71812143
2,71812143
OK, I managed to show a png graph using imagegeview. Thank you very much. I did not test the bytes object yet, but it will also show just an image. What I now realize is that I wanted to make use of the matplotlib plt.show() function, because then the graph is not passively displayed, but shown with zoom/pan functions. Would that be possible?
– Peter
Nov 20 '18 at 15:40
@Peter: It's not currently possible: it would require someone to write an Android front end for matplotlib.
– mhsmith
Nov 21 '18 at 13:18
add a comment |
OK, I managed to show a png graph using imagegeview. Thank you very much. I did not test the bytes object yet, but it will also show just an image. What I now realize is that I wanted to make use of the matplotlib plt.show() function, because then the graph is not passively displayed, but shown with zoom/pan functions. Would that be possible?
– Peter
Nov 20 '18 at 15:40
@Peter: It's not currently possible: it would require someone to write an Android front end for matplotlib.
– mhsmith
Nov 21 '18 at 13:18
OK, I managed to show a png graph using imagegeview. Thank you very much. I did not test the bytes object yet, but it will also show just an image. What I now realize is that I wanted to make use of the matplotlib plt.show() function, because then the graph is not passively displayed, but shown with zoom/pan functions. Would that be possible?
– Peter
Nov 20 '18 at 15:40
OK, I managed to show a png graph using imagegeview. Thank you very much. I did not test the bytes object yet, but it will also show just an image. What I now realize is that I wanted to make use of the matplotlib plt.show() function, because then the graph is not passively displayed, but shown with zoom/pan functions. Would that be possible?
– Peter
Nov 20 '18 at 15:40
@Peter: It's not currently possible: it would require someone to write an Android front end for matplotlib.
– mhsmith
Nov 21 '18 at 13:18
@Peter: It's not currently possible: it would require someone to write an Android front end for matplotlib.
– mhsmith
Nov 21 '18 at 13:18
add a comment |
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%2f53285429%2fhow-to-display-python-matplotlib-graphs-png-with-chaquopy-in-android-studio%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
Installing matplotlib should be easy, so I'm concerned by "a few missing elements, manual pip3 install and usage of local files". If you had any problems here, please report them at the Chaquopy GitHub page.
– mhsmith
Nov 14 '18 at 15:39
I unfortunately do not have the logs anymore, but I remember that even after a manual pip3 install of matplotlib, it was still necessary to install freetype (a dev version was suggested). So I now have both libfreetype6 and libfreetype6-dev installed.
– Peter
Nov 20 '18 at 15:58
Chaquopy comes with its own copy of pip which installs into an isolated environment, so what you have installed on the build machine should make no difference.
– mhsmith
Nov 21 '18 at 13:16