我有一个三维numpy数组.我想(在matplotlib中)显示这个数组的等值面的一个漂亮的3D图(或者更严格地说,显示通过在样本点之间插值定义的3D标量场的等值面).
matplotlib的mplot3D部分提供了很好的3D绘图支持,但是(据我所知)它的API没有任何东西可以简单地采用标量值的3D数组并显示等值面.但是,它确实支持显示多边形集合,因此我可以实现行进立方体算法来生成这样的多边形.
似乎很可能已经在某处实现了一个友好的行进立方体并且我没有找到它,或者我错过了一些简单的方法.或者,我欢迎任何指向其他工具的指针,以便可视化从Python/numpy/scipy世界中轻松使用的3D数组数据.
我在ubuntu中安装了python3.2(默认版本没有删除),我按照这里的步骤操作
但是,当我使用
python3.2 setup.py install
Run Code Online (Sandbox Code Playgroud)
我有:
"error: command 'gcc' failed with exit status 1",
"src/ft2font.cpp:2224:29: error: ‘Int’ is not a member of ‘Py’"
Run Code Online (Sandbox Code Playgroud)
当我使用时
sudo apt-get install python-matplotlib
我可以在python2.x中使用matplot,而我仍然无法使用它与python3.2如何在python3.2中安装matplot?
如何在matplotlib中围绕文本制作一个框?我有三种不同的文字和三种不同颜色的文字:
ax.text(2,1, 'alpha', color='red')
ax.text(2,2, 'beta', color='cyan')
ax.text(2,3, 'epsilon', color='black')
Run Code Online (Sandbox Code Playgroud)
我看过教程http://matplotlib.org/users/recipes.html(最后一个例子),但我无法解决问题.提前致谢.
如何在我的计算机上使用我的字体库中的任何类型的字体(例如*otf或者*ttf)matplotlib?
看看下面的图表:

这是这个更大的数字的子情节:

我看到它有两个问题.首先,x轴标签相互重叠(这是我的主要问题).第二.x轴次网格线的位置似乎有点不稳定.在图表的左侧,它们看起来间隔适当.但在右边,它们似乎挤满了主要的网格线......好像主要的网格线位置不是小刻度线位置的正确倍数.
我的设置是我有一个DataFrame df,它有一个DatetimeIndex行和一个value包含浮点数的列.df如有必要,我可以在要点中提供内容的示例.df这篇文章的底部有十几行作为参考.
这是生成图形的代码:
now = dt.datetime.now()
fig, axes = plt.subplots(2, 2, figsize=(15, 8), dpi=200)
for i, d in enumerate([360, 30, 7, 1]):
ax = axes.flatten()[i]
earlycut = now - relativedelta(days=d)
data = df.loc[df.index>=earlycut, :]
ax.plot(data.index, data['value'])
ax.xaxis_date()
ax.get_xaxis().set_minor_locator(mpl.ticker.AutoMinorLocator())
ax.get_yaxis().set_minor_locator(mpl.ticker.AutoMinorLocator())
ax.grid(b=True, which='major', color='w', linewidth=1.5)
ax.grid(b=True, which='minor', color='w', linewidth=0.75)
Run Code Online (Sandbox Code Playgroud)
这里我最好的选择是让x轴标签相互重叠(在四个子图中的每一个中)?另外,单独(但不太紧急),左上方子图中的次要刻度问题是什么?
我在Pandas 0.13.1,numpy 1.8.0和matplotlib 1.4.x.
这里有一小段df供参考:
id scale tempseries_id value
timestamp
2014-11-02 14:45:10.302204+00:00 7564 F 1 68.0000
2014-11-02 14:25:13.532391+00:00 …Run Code Online (Sandbox Code Playgroud) 我有一个计算几何问题,我觉得应该有一个相对简单的解决方案,但我无法弄明白.
我需要确定由几个线段定义的区域的非凸轮廓.
我知道各种非凸壳体算法(例如alpha形状),但我不需要完全通用的算法,因为线段在大多数情况下定义了一个独特的解决方案.
正如@ Jean-FrançoisCorbett指出的那样,有些情况下有多种解决方案.我显然需要更多地考虑我的定义.
但是,我要做的是逆向工程并使用专有的文件格式,以便我可以对自己和其他人收集的数据进行基本分析.文件格式很简单,但确定用于定义边界的算法要困难得多.
放入导致非唯一解决方案的许多边缘情况会导致相关软件在没有警告的情况下崩溃或者无法读取文件.
因此,当存在多个解决方案时,要么生成一个可接受的解决方案,要么能够确定存在多个解决方案,这是可以接受的.
多边形的轮廓不应该穿过任何段,并且应该由连接所有段的端点的线组成.所有段必须完全位于多边形的边界内或沿着多边形的边界.大纲中不能使用多个端点(通过在需要多边形关闭的软件库的末尾添加第一个点来忽略"关闭"多边形.).
如果有多个解决方案符合此标准,那么任何一种解决方案都是可以接受的.(能够确定解决方案何时非唯一,这将是非常好的,但这不是绝对必要的.)
举个例子,我有以下几点:

我想描述以下几个方面:

它也适用于非交叉段.例如

我认为(?)在任何一种情况下都有一个独特的解决方案,符合之前的标准.(编辑:一般来说,没有一个独特的解决方案,正如@ Jean-FrançoisCorbett所指出的那样.但是,我仍然对能够产生一种可接受的解决方案的算法感兴趣.)
对于测试用例,这是生成上述数字的代码.我在这里使用python,但问题是与语言无关.
import matplotlib.pyplot as plt
def main():
test1()
test2()
plt.show()
def test1():
"""Intersecting segments."""
segments = [[(1, 1), (1, 3)],
[(3.7, 1), (2, 4)],
[(2, 0), (3.7, 3)],
[(4, 0), (4, 4)],
[(4.3, 1), (4.3, 3)],
[(0, 2), (6, 3)]]
desired_outline = [segments[0][0], segments[5][0], segments[0][1],
segments[1][1], segments[2][1], segments[3][1],
segments[4][1], segments[5][1], segments[4][0],
segments[3][0], segments[1][0], segments[2][0],
segments[0][0]]
plot(segments, desired_outline)
def test2():
"""Non-intersecting segments."""
segments …Run Code Online (Sandbox Code Playgroud) python language-agnostic algorithm geometry computational-geometry
我正在关注如何在Matplotlib中绘制混淆矩阵的前一个主题.脚本如下:
from numpy import *
import matplotlib.pyplot as plt
from pylab import *
conf_arr = [[33,2,0,0,0,0,0,0,0,1,3], [3,31,0,0,0,0,0,0,0,0,0], [0,4,41,0,0,0,0,0,0,0,1], [0,1,0,30,0,6,0,0,0,0,1], [0,0,0,0,38,10,0,0,0,0,0], [0,0,0,3,1,39,0,0,0,0,4], [0,2,2,0,4,1,31,0,0,0,2], [0,1,0,0,0,0,0,36,0,2,0], [0,0,0,0,0,0,1,5,37,5,1], [3,0,0,0,0,0,0,0,0,39,0], [0,0,0,0,0,0,0,0,0,0,38] ]
norm_conf = []
for i in conf_arr:
a = 0
tmp_arr = []
a = sum(i,0)
for j in i:
tmp_arr.append(float(j)/float(a))
norm_conf.append(tmp_arr)
plt.clf()
fig = plt.figure()
ax = fig.add_subplot(111)
res = ax.imshow(array(norm_conf), cmap=cm.jet, interpolation='nearest')
for i,j in ((x,y) for x in xrange(len(conf_arr))
for y in xrange(len(conf_arr[0]))):
ax.annotate(str(conf_arr[i][j]),xy=(i,j))
cb = fig.colorbar(res)
savefig("confusion_matrix.png", format="png")
Run Code Online (Sandbox Code Playgroud)
我想改变轴显示的字母串,表示(A,B,C,...),而不是整数(0,1,2,3,..10).怎么能这样做.谢谢. …
在python中如果定义:
a = arange(9).reshape(3,3)
Run Code Online (Sandbox Code Playgroud)
作为3x3矩阵并迭代:
for i in a:
Run Code Online (Sandbox Code Playgroud)
它将迭代矩阵的行.有没有办法迭代列?
我非常沮丧,因为几个小时后我似乎无法在python中做一个看似简单的3D插值.在Matlab中我所要做的就是
Vi = interp3(x,y,z,V,xi,yi,zi)
Run Code Online (Sandbox Code Playgroud)
使用scipy的ndimage.map_coordinate或其他numpy方法,这相当于什么呢?
谢谢
我有一组png图像,我想用Python和相关工具处理.每个图像代表具有已知尺寸的物理对象.
在每个图像中,在特定像素/物理位置处存在对象的特定特征.每个图像的位置不同.
我想在给定图像上施加极坐标系,原点位于此特征的位置.
然后,我希望能够获得以下信息: - 作为给定极角的径向位置的函数的图像强度 - 当在所有极角上平均值时,图像强度作为径向位置的函数.
我在Python编程和在NumPy和SciPy中使用许多函数方面经验丰富,但在图像分析方面我是一个完整的新手.
我将不胜感激,你可以给我任何建议,以解决这个问题.
谢谢.