Is there a way to set up python 2.7.x + matplotlib on an android tablet so that you can run simple standard python code? I would like to be able to run the same scripts I run on my Linux desktop. This is just for my own use and I don't need to distribute the code to anyone else.
As a concrete example, is it possible to run this script?
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 5, 0.1);
y = np.sin(x)
plt.plot(x, y)
Is it easy, no.
Can it be done? Yes. I believe a skilled Python / Android developer could do it in 2 to 8 hours of effort.. It's a rare and complex request.
Why do I think it can be done? This sample: http://matplotlib.org/examples/pylab_examples/webapp_demo.html
Using a different library, and not abstracted for data without live hardware, this sample shows me that SL4A can do web-based graphics: http://www.smartphonedaq.com/android-python-ecg.page
Now, if you were talking native GUI graphics in Android - then I'm focused way too much on the web methods of publishing with SL4A ;)
There is an app called Gnuroot that allows you to run a kind-of chroot (proot), where you can install a linux distro such as debian, archlinux...
For the gui, there is the option to run a vncserver for an X server and use some android vnc client app to show the screen.
I use the non-gui version of gnuroot and it works well. I now have a command line debian wheezy on android lollipop arm. One minor thing i miss, is armhf (hardware floating point which my nexus7's processor can do) support instead of armel (software floating point).
Yes, it can be done, even without root. You need the termux
app, it basically is a terminal emulator with a full Linux environment and via apt install python
, for example, you can install python
.
The main webpage is here , and it is of course available via the standard market. (The termux wiki is a helpful place.)
ever heard of qpython? http://qpython.com/ i personally never used it, but my colleague were quite handy with it so you may want to look at that
I've read somewhere that scipy and matplotlib cannot be compiled for android, someone did it for numpy though
https://code.google.com/p/android-scripting/issues/detail?id=260
您可以设置一个便宜的服务器(Raspberry Pi?)并创建一个到它的 ssh 连接,以通过 vnc 查看器 android 应用程序或 shell 访问完整的 python 功能
You can try MathSys . It's a wrapper around Python, and it has matplotlib inside.
Unfortunately, MathSys is rather convoluted, and it's an alpha version. Apparently, nobody is working on a beta version. You'll want to write any complicated code in an external file. import
works fine in MathSys.
Upon searching numpy android
on Google, I found a very nice library . I guess it might be helpful.
Here is the code, this works after installing GNURoot Debian as you said. Just a detail : my graph is exported directly in a .png
file :
from pylab import *
import matplotlib.pyplot as plt
plt.switch_backend('agg')
x = linspace(-5, 5, 100)
y = sin(x)
plot(x, y)
out_png = 'out_file.png'
plt.savefig(out_png, dpi=150)
There is a lot of incorrect information in this thread! I first tried Termux, using the information from this thread: How do I install Jupyter notebook on an Android device? but could not get Matplotlib downloaded for the life of me. The error messages suggested I needed to install wheel, which I did, but the install crash was only postponed. I am not saying it is not possible to install Matplotlib from Termux on a Galaxy Tab A, but I cannot do it. On the other hand, downloading Pyroid3 was straightforward, as was installing numpy, scipy and matplotlib. So that's my recommendation, based on success in doing so.
I just got this running for myself and these are the steps I used:
pkg install python
pkg install python-tkinter
import os
from time import sleep
os.environ["MPLBACKEND"] = "TkAgg"
os.environ["DISPLAY"] = ":0.0"
print('Loading X server...')
os.system("am start --user 0 -n x.org.server/.RunFromOtherApp 2>/dev/null")
os.environ["DISPLAY"] = ":0.0"
sleep(8) # give the X server an opportunity to start
print('Done')
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 5, 0.1);
y = np.sin(x)
plt.plot(x, y)
plt.show()
There's probably a better way to detect whether the X server is already running so you don't have to launch it every time, but I haven't figured out how to do that yet.
Use the linux shell, I have it git python and pip installed on my phone. I used gnuroot in the play store.. You can apt-get install python pip from there
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.