Comments (12)
アナコンダを再インストールしても駄目で、原始的ですが、自分でuを直接256×256のbmpファイルにして、aviファイルへ結合という手段で、動作自体は確認できました。
from alife_book_src.
答えになってなくて恐縮ですが、同じくgray_scott.pyが動かず、他のプログラムも動かないといいますか、中が透けたウィンドウ枠が出るだけです。windows7です。どなたか解決された方はいらっしゃらないでしょうか?
from alife_book_src.
Windowsで上記のエラーでしたらこのissueと同じ原因なのではないでしょうか。
vispy/vispy#1503
こちらでは pyqtのバージョン4を使用したらvispyが動いたという報告があります。
手順としては以下のようになるでしょうか(私の環境ではエラーが出ないので、動作未検証です
$ conda clean --all
$ conda install "pyqt<5"
$ python gray_scott.py
# ImportError : No module named 'xxx' が出たら $ conda install xxx して潰していく
from alife_book_src.
コメントありがとうございました。
自分のPyQtもVer.5でしたので可能性が大きいと思いますが、pyqt4はconda installではインストールできませんでした。
pyqt4はソースファイルしかネットにないので、ダウンロードしてコンパイルして、condaにつなげる
pyではなくてC言語で自作する
pyqt4でも動くようにしてみる?
というのの、一番楽そうな方法で試してみようと思います。
vispyのバージョンを変えてみるとかでも良いかも。
from alife_book_src.
alifebook_libのソースも読んでみたのですが、vispyで使用するバックエンドを PyQt5
に明示的に指定しているので、PyQt4をインストールする場合はこちらも書き換える必要があると思います。
https://github.com/alifelab/alife_book_src/blob/master/alifebook_lib/__init__.py#L2
本書のコードがPyQt4でも正常に動くのか、というのは別の問題なのですが、異なるバックエンドを統一的なインターフェースで扱えるようにすることがvispyの目的なら、動いてくれるのではないかと期待しています。
from alife_book_src.
@tomotomo47 PyQt4を使用するのとは別のアプローチです
@079hide さんが挙げているのと同じ状況、つまり
RuntimeError: Using xxxx with no OpenGL context.
エラーが発生していて、かつ
$ python -c "import vispy; print(vispy.sys_info())"
した際に GL version が表示されない場合( GL version: ''
のように:以下が空の場合 )は、vispyが使用するOpenGLターゲットを変更してみるのが有効かもしれません。
方法
https://github.com/alifelab/alife_book_src/blob/master/alifebook_lib/__init__.py#L2
の vispy.use('PyQt5')
を以下のそれぞれに変更して実行してみてください。
vispy.use('PyQt5', 'es2')
vispy.use('PyQt5', 'gl+')
vispy.use('PyQt5', 'pyopengl2')
解説
alifebook_libでは vispy.use()
呼び出し時に第二引数を省略しているため、ターゲットがデフォルトの gl2
固定になっているところを、別のターゲットに変更してみる試みです。
お使いの環境で gl2
ターゲットが動作しないので問題が起きているのではないかという仮説です。
そうだとすれば es2 - Use the ES2 library (Angle/DirectX on Windows)
とあるので、Windows環境では vispy.use('PyQt5', 'es2')
と書き換えれば動くのではないかと思います。
ターゲット一覧と解説: https://github.com/vispy/vispy/blob/master/vispy/gloo/gl/__init__.py#L112-L118
from alife_book_src.
いろいろ助言頂きありがとうございます。
本によると、PyQt5を前提にしていると書いてあるので、PyQt4出ないと動かないというのは違うのかもしれません。
また、es2、gl+、pyopeng12についてやってみましたが、それらが無いというエラーになり、事態は後退してしまいました。
そもそも、エラーメッセージも載せて無いなか、コメント頂きありがとうございました。あらためて、エラー出力を載せます。
その前に、python -c "import vispy; print(vispy.sys_info())"の結果は、
Platform: Windows-7-6.1.7601-SP1
Python: 3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)]
NumPy: 1.15.4
Backend: PyQt5
pyqt4: None
pyqt5: ('PyQt5', '5.9.2', '5.9.6')
pyside: None
pyglet: pyglet 1.3.2
glfw: None
sdl2: None
wx: None
egl: None
osmesa: None
_test: None
App info-gathering error:
Traceback (most recent call last):
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\util\config.py", line 434, in sys_info
out += 'GL version: %r\n' % (gl.glGetParameter(gl.GL_VERSION),)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\gl_gl2.py", line 798, in glGetParameter
res = nativefunc(name)
File "C:\Users\tomo\Anaconda3\lib\site-packages\pyglet\gl\lib.py", line 105, in errcheck
raise GLException(msg)
pyglet.gl.lib.GLException: b'invalid operation'
後半に、エラーが出ているようです。
実行時のエラーメッセージは、長いのですが、
C:\Users\tomo\Anaconda3\lib\site-packages\vispy\visuals\isocurve.py:22: UserWarning: VisPy is not yet compatible with matplotlib 2.2+
warnings.warn("VisPy is not yet compatible with matplotlib 2.2+")
WARNING: Traceback (most recent call last):
File "C:\Users\tomo\Anaconda3\lib\runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "C:\Users\tomo\Anaconda3\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel_launcher.py", line 16, in
app.launch_new_instance()
File "C:\Users\tomo\Anaconda3\lib\site-packages\traitlets\config\application.py", line 658, in launch_instance
app.start()
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel\kernelapp.py", line 505, in start
self.io_loop.start()
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\platform\asyncio.py", line 132, in start
self.asyncio_loop.run_forever()
File "C:\Users\tomo\Anaconda3\lib\asyncio\base_events.py", line 528, in run_forever
self._run_once()
File "C:\Users\tomo\Anaconda3\lib\asyncio\base_events.py", line 1764, in _run_once
handle._run()
File "C:\Users\tomo\Anaconda3\lib\asyncio\events.py", line 88, in _run
self._context.run(self._callback, *self._args)
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\ioloop.py", line 758, in _run_callback
ret = callback()
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\stack_context.py", line 300, in null_wrapper
return fn(*args, **kwargs)
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\gen.py", line 1233, in inner
self.run()
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\gen.py", line 1147, in run
yielded = self.gen.send(value)
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 357, in process_one
yield gen.maybe_future(dispatch(*args))
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\gen.py", line 326, in wrapper
yielded = next(result)
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 267, in dispatch_shell
yield gen.maybe_future(handler(stream, idents, msg))
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\gen.py", line 326, in wrapper
yielded = next(result)
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 534, in execute_request
user_expressions, allow_stdin,
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\gen.py", line 326, in wrapper
yielded = next(result)
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel\ipkernel.py", line 294, in do_execute
res = shell.run_cell(code, store_history=store_history, silent=silent)
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel\zmqshell.py", line 536, in run_cell
return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
File "C:\Users\tomo\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2819, in run_cell
raw_cell, store_history, silent, shell_futures)
File "C:\Users\tomo\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2845, in _run_cell
return runner(coro)
File "C:\Users\tomo\Anaconda3\lib\site-packages\IPython\core\async_helpers.py", line 67, in _pseudo_sync_runner
coro.send(None)
File "C:\Users\tomo\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3020, in run_cell_async
interactivity=interactivity, compiler=compiler, result=result)
File "C:\Users\tomo\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3185, in run_ast_nodes
if (yield from self.run_code(code, result)):
File "C:\Users\tomo\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3267, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 54, in
visualizer.update(u)
File "..\alifebook_lib\visualizers\matrix_visualizer.py", line 36, in update
app.process_events()
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\app_default_app.py", line 79, in process_events
return default_app.process_events()
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\app\application.py", line 78, in process_events
return self._backend._vispy_process_events()
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\app\backends_qt.py", line 222, in _vispy_process_events
app.processEvents()
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\app\backends_qt.py", line 436, in event
out = super(QtBaseCanvasBackend, self).event(ev)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\app\backends_qt.py", line 708, in paintGL
self._vispy_canvas.events.draw(region=None)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\util\event.py", line 455, in call
self._invoke_callback(cb, event)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\util\event.py", line 475, in _invoke_callback
self, cb_event=(cb, event))
<< caught exception here: >>
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\util\event.py", line 471, in _invoke_callback
cb(event)
File "..\alifebook_lib\visualizers\matrix_visualizer.py", line 28, in _on_draw
self._render_program.draw(gloo.gl.GL_TRIANGLE_STRIP)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\program.py", line 470, in draw
canvas.context.flush_commands()
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\context.py", line 170, in flush_commands
self.shared.parser.parse([('CURRENT', 0)])
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\glir.py", line 477, in parse
self._parse(command)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\glir.py", line 404, in _parse
self._gl_initialize()
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\glir.py", line 502, in _gl_initialize
if this_version < '2.1':
File "C:\Users\tomo\Anaconda3\lib\distutils\version.py", line 52, in lt
c = self._cmp(other)
File "C:\Users\tomo\Anaconda3\lib\distutils\version.py", line 335, in _cmp
if self.version == other.version:
AttributeError: 'LooseVersion' object has no attribute 'version'
ERROR: Invoking <bound method MatrixVisualizer._on_draw of <alifebook_lib.visualizers.matrix_visualizer.MatrixVisualizer object at 0x0000000004EB0278>> for DrawEvent
WARNING: Traceback (most recent call last):
File "C:\Users\tomo\Anaconda3\lib\runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "C:\Users\tomo\Anaconda3\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel_launcher.py", line 16, in
app.launch_new_instance()
File "C:\Users\tomo\Anaconda3\lib\site-packages\traitlets\config\application.py", line 658, in launch_instance
app.start()
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel\kernelapp.py", line 505, in start
self.io_loop.start()
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\platform\asyncio.py", line 132, in start
self.asyncio_loop.run_forever()
File "C:\Users\tomo\Anaconda3\lib\asyncio\base_events.py", line 528, in run_forever
self._run_once()
File "C:\Users\tomo\Anaconda3\lib\asyncio\base_events.py", line 1764, in _run_once
handle._run()
File "C:\Users\tomo\Anaconda3\lib\asyncio\events.py", line 88, in _run
self._context.run(self._callback, *self._args)
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\ioloop.py", line 758, in _run_callback
ret = callback()
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\stack_context.py", line 300, in null_wrapper
return fn(*args, **kwargs)
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\gen.py", line 1233, in inner
self.run()
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\gen.py", line 1147, in run
yielded = self.gen.send(value)
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 357, in process_one
yield gen.maybe_future(dispatch(*args))
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\gen.py", line 326, in wrapper
yielded = next(result)
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 267, in dispatch_shell
yield gen.maybe_future(handler(stream, idents, msg))
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\gen.py", line 326, in wrapper
yielded = next(result)
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 534, in execute_request
user_expressions, allow_stdin,
File "C:\Users\tomo\Anaconda3\lib\site-packages\tornado\gen.py", line 326, in wrapper
yielded = next(result)
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel\ipkernel.py", line 294, in do_execute
res = shell.run_cell(code, store_history=store_history, silent=silent)
File "C:\Users\tomo\Anaconda3\lib\site-packages\ipykernel\zmqshell.py", line 536, in run_cell
return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
File "C:\Users\tomo\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2819, in run_cell
raw_cell, store_history, silent, shell_futures)
File "C:\Users\tomo\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2845, in _run_cell
return runner(coro)
File "C:\Users\tomo\Anaconda3\lib\site-packages\IPython\core\async_helpers.py", line 67, in _pseudo_sync_runner
coro.send(None)
File "C:\Users\tomo\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3020, in run_cell_async
interactivity=interactivity, compiler=compiler, result=result)
File "C:\Users\tomo\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3185, in run_ast_nodes
if (yield from self.run_code(code, result)):
File "C:\Users\tomo\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3267, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 54, in
visualizer.update(u)
File "..\alifebook_lib\visualizers\matrix_visualizer.py", line 36, in update
app.process_events()
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\app_default_app.py", line 79, in process_events
return default_app.process_events()
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\app\application.py", line 78, in process_events
return self._backend._vispy_process_events()
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\app\backends_qt.py", line 222, in _vispy_process_events
app.processEvents()
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\app\backends_qt.py", line 436, in event
out = super(QtBaseCanvasBackend, self).event(ev)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\app\backends_qt.py", line 708, in paintGL
self._vispy_canvas.events.draw(region=None)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\util\event.py", line 455, in call
self._invoke_callback(cb, event)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\util\event.py", line 475, in _invoke_callback
self, cb_event=(cb, event))
<< caught exception here: >>
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\gl_gl2.py", line 269, in glCreateProgram
nativefunc = glCreateProgram._native
AttributeError: 'function' object has no attribute '_native'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\gl\gl2.py", line 72, in get_gl_func
func = getattr(lib, name)
File "C:\Users\tomo\Anaconda3\lib\ctypes_init.py", line 369, in getattr
func = self.getitem(name)
File "C:\Users\tomo\Anaconda3\lib\ctypes_init.py", line 374, in getitem
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'glCreateProgram' not found
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\util\event.py", line 471, in _invoke_callback
cb(event)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\context.py", line 171, in flush_commands
self.glir.flush(self.shared.parser)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\glir.py", line 232, in flush
self._shared.flush(parser)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\glir.py", line 146, in flush
parser.parse(self._filter(self.clear(), parser))
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\glir.py", line 477, in parse
self._parse(command)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\glir.py", line 417, in parse
self.objects[id] = klass(self, id)
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\glir.py", line 546, in init
self.create()
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\glir.py", line 600, in create
self._handle = gl.glCreateProgram()
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\gl_gl2.py", line 271, in glCreateProgram
nativefunc = glCreateProgram._native = _get_gl_func("glCreateProgram", ctypes.c_uint, ())
File "C:\Users\tomo\Anaconda3\lib\site-packages\vispy\gloo\gl\gl2.py", line 87, in _get_gl_func
raise RuntimeError('Using %s with no OpenGL context.' % name)
RuntimeError: Using glCreateProgram with no OpenGL context.
ERROR: Invoking <bound method GLContext.flush_commands of <GLContext at 0x8492668>> for DrawEvent
ERROR: Invoking <bound method MatrixVisualizer._on_draw of <alifebook_lib.visualizers.matrix_visualizer.MatrixVisualizer object at 0x0000000004EB0278>> repeat 2
ERROR: Invoking <bound method GLContext.flush_commands of <GLContext at 0x8492668>> repeat 2
ERROR: Invoking <bound method MatrixVisualizer._on_draw of <alifebook_lib.visualizers.matrix_visualizer.MatrixVisualizer object at 0x0000000004EB0278>> repeat 4
ERROR: Invoking <bound method GLContext.flush_commands of <GLContext at 0x8492668>> repeat 4
ERROR: Invoking <bound method MatrixVisualizer._on_draw of <alifebook_lib.visualizers.matrix_visualizer.MatrixVisualizer object at 0x0000000004EB0278>> repeat 8
ERROR: Invoking <bound method GLContext.flush_commands of <GLContext at 0x8492668>> repeat 8
ERROR: Invoking <bound method MatrixVisualizer._on_draw of <alifebook_lib.visualizers.matrix_visualizer.MatrixVisualizer object at 0x0000000004EB0278>> repeat 16
ERROR: Invoking <bound method GLContext.flush_commands of <GLContext at 0x8492668>> repeat 16
ERROR: Invoking <bound method MatrixVisualizer._on_draw of <alifebook_lib.visualizers.matrix_visualizer.MatrixVisualizer object at 0x0000000004EB0278>> repeat 32
ERROR: Invoking <bound method GLContext.flush_commands of <GLContext at 0x8492668>> repeat 32
ERROR: Invoking <bound method MatrixVisualizer._on_draw of <alifebook_lib.visualizers.matrix_visualizer.MatrixVisualizer object at 0x0000000004EB0278>> repeat 64
ERROR: Invoking <bound method GLContext.flush_commands of <GLContext at 0x8492668>> repeat 64
ERROR: Invoking <bound method MatrixVisualizer._on_draw of <alifebook_lib.visualizers.matrix_visualizer.MatrixVisualizer object at 0x0000000004EB0278>> repeat 128
ERROR: Invoking <bound method GLContext.flush_commands of <GLContext at 0x8492668>> repeat 128
ERROR: Invoking <bound method MatrixVisualizer._on_draw of <alifebook_lib.visualizers.matrix_visualizer.MatrixVisualizer object at 0x0000000004EB0278>> repeat 256
ERROR: Invoking <bound method GLContext.flush_commands of <GLContext at 0x8492668>> repeat 256
from alife_book_src.
OpenGLのバージョン2未満では glCreateProgram
を利用できないため上記のエラーが出ているかもしれません。
グラフィックカードのドライバを更新してみたらどうなるでしょうか。
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCreateProgram.xhtml
from alife_book_src.
一応描画系を書き換えればweb上でも動かせられました
from alife_book_src.
OpenGLのバージョンは3.1でした。一応、更新して再起動とかをしてみます。
from alife_book_src.
Related Issues (20)
- chap02/cellular_automata_1d.pyのWIDTHとHEIGHTの扱い HOT 2
- chap02/gray_scott_1d.pyとgray_scott_param.pyのコメントが英語 HOT 1
- Windows+Anacondaでpygame周りのエラー HOT 2
- chap07のreadme.mdの句点
- コメントは日本語で統一 HOT 4
- chap06_evolution/ant_nn_ga.py内のスペルミス
- Subsumptionで、働いているモジュールに応じて色を変える
- SwarmVisualizerを改良 HOT 1
- SCLVisualizerを改良
- 1DArrayVisualizer HOT 2
- docker anaconda3へのAlife環境インストールエラーにつきまして HOT 4
- vispy実行時のSegmentation fault (コアダンプ) HOT 1
- pymunkのインストールでエラー HOT 2
- VisPy is not yet compatible with matplotlib 2.2+ HOT 1
- サンプルプログラムをColaboratoryで動かしたい HOT 1
- English translation for book and repository HOT 1
- 4.2 chap04 boids.py boidが現れない HOT 5
- scl_utils.pyのムーア近傍の取得のコードに関しまして
- simulatorをjupyter notebook上で動くようにしたい HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from alife_book_src.