现在matplotlib的默认后端是 'module://ipykernel.pylab.backend_inline'
我想切换到TkAGG.我编辑了matplotlibrc文件
~/anaconda2/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc/
加上
backend : TkAgg
它确实切换了backendpython而不是Jupyter.
现在,每次我开始使用新笔记本时Jupyter,我都必须这样做%matplotlib tk,不是有一个很好的方法来制作TkAGG默认的后端Jupyter吗?
我试图绘制从一堆点(3D中的多面体)接收的特征向量和协方差矩阵.这就是我做的.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from numpy import linalg as la
from matplotlib.patches import FancyArrowPatch
from mpl_toolkits.mplot3d import proj3d
class Arrow3D(FancyArrowPatch):
def __init__(self, xs, ys, zs, *args, **kwargs):
FancyArrowPatch.__init__(self, (0,0), (0,0), *args, **kwargs)
self._verts3d = xs, ys, zs
def draw(self, renderer):
xs3d, ys3d, zs3d = self._verts3d
xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, renderer.M)
self.set_positions((xs[0],ys[0]),(xs[1],ys[1]))
FancyArrowPatch.draw(self, renderer)
##################################################################################################
#here i start with drawing the actual polyhedron and the vector
##################################################################################################
#generate num …Run Code Online (Sandbox Code Playgroud) 我正在用一堆多边形绘制一个表面。绘图非常简单,如下所示。
def plotSurface(cell, numOfLayer, name=None, alpha = 0.5):
#import the libraries
from mpl_toolkits.mplot3d import Axes3D
import matplotlib as mpl
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import numpy as np
import matplotlib.pyplot as plt
#limits of the plot
radius = (numOfLayer>1)*(np.sqrt(3.)*(numOfLayer-1)-Length)+Length#the radius of circle to be projected on
#plotting part
fig = plt.figure(frameon=False,figsize=(12,10))
ax = Axes3D(fig)
ax.set_xlim((-2*radius,2*radius))
ax.set_ylim((-2*radius,2*radius))
ax.set_zlim((-0.5*radius,2*radius))
ax.axis('off')
#fig = plt.figure()
#ax = fig.gca(projection='3d')
##iterating through the cell##
for stuff happening here : verts are the polygon vertices
#adding to 3d …Run Code Online (Sandbox Code Playgroud) 我试图更新我matplotlib的virtualenv现在似乎一切都崩溃了:(
我到现在为止做的基本上是,
source ~/myenv/bin/activate
pip install -U matplotlib
Run Code Online (Sandbox Code Playgroud)
我以前matplotlib 1.3现在如果我激活py虚拟环境并检查matplotlib version它显示2.1
但我无法Axes3D从matplotlib 导入.
>>> import importlib
>>> importlib.import_module('mpl_toolkits.mplot3d').__path__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/nld/python-2.7.6-freya/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/home/jkhadka/vir_python/lib/python2.7/site-packages/mpl_toolkits/mplot3d/__init__.py", line 6, in <module>
from .axes3d import Axes3D
File "/home/jkhadka/vir_python/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axes3d.py", line 32, in <module>
from matplotlib.cbook import _backports
ImportError: cannot import name _backports
Run Code Online (Sandbox Code Playgroud)
我在linux平台上工作并使用Python 2.7.
我看到了进一步的问题,
如果我只是打开虚拟python,而不激活virtualenv,我得到 matplotlib 2.1
$:~> myenv/bin/python
Python 2.7.6 …Run Code Online (Sandbox Code Playgroud) 我正在使用以下函数尝试将一堆顶点投影到一个平面上.基本上将多面体映射到多边形.我的平面由法向量和一个点(这里称为质心)定义.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from numpy import linalg as la
#######################################################################################################
#this part is for drawing the vector arrow
#copy pasted
#http://stackoverflow.com/questions/22867620/putting-arrowheads-on-vectors-in-matplotlibs-3d-plot
#######################################################################################################
from matplotlib.patches import FancyArrowPatch
from mpl_toolkits.mplot3d import proj3d
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import matplotlib.cm as cm#for color selection
import itertools
class Arrow3D(FancyArrowPatch):
def __init__(self, xs, ys, zs, *args, **kwargs):
FancyArrowPatch.__init__(self, (0,0), (0,0), *args, **kwargs)
self._verts3d = xs, ys, zs
def draw(self, renderer):
xs3d, ys3d, zs3d = self._verts3d
xs, …Run Code Online (Sandbox Code Playgroud) 我有两个数组A和B,
>> np.shape(A)
>> (7, 6, 2)
>> np.shape(B)
>> (6,2)
Run Code Online (Sandbox Code Playgroud)
现在,我要连接的两个阵列,从而A扩展到(8,6,2)与A[8] = B
我试过 np.concatenate()
>> np.concatenate((A,B),axis = 0)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-40-d614e94cfc50> in <module>()
----> 1 np.concatenate((A,B),axis = 0)
ValueError: all the input arrays must have same number of dimensions
Run Code Online (Sandbox Code Playgroud)
和 np.vstack()
>> np.vstack((A,B))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-41-7c091695f277> in <module>()
----> 1 np.vstack((A,B))
//anaconda/lib/python2.7/site-packages/numpy/core/shape_base.pyc in vstack(tup)
228
229 """
--> 230 …Run Code Online (Sandbox Code Playgroud) 我想在Python中绘制三维随机游走.与下面给出的图片相似的东西.你能给我一个工具吗?我试图使用matplotlib,但对如何做到这一点感到困惑.
现在我有一个lattice零的阵列,其基本上是X*Y*Z二维并保持其中随机游走已经走过,把信息0以1在每个(x,y,z)该随机游走已加强.