小编Ian*_*Ian的帖子

是否存在matplotlib.ticker.LogFormatterSciNotation的非数学版本?

我试图使用对数y轴绘制图形pgf_with_latex,即所有文本格式都由pdflatex完成.在我的matplotlib rc参数中,我定义了一个要使用的字体.这是我的问题:标准matplotlib.ticker.LogFormatterSciNotation格式化程序使用数学文本,因此使用数学字体,它不适合其他字体(sans-serif).

如何使用格式化程序格式化y轴标签,matplotlib.ticker以便我获得标签格式为10的权力,并带有上标权限?更具体一点:我如何使用xticklabels中的字体以相同的方式格式化这些yticklabels?

我已经尝试过使用不同的格式化程序matplotlib.ticker,但是没有一个像我想要的那样编​​写指数.

以下是我对MWE的意思. 示例情节

import matplotlib as mpl

mpl.use('pgf')
pgf_with_latex = {
        "pgf.texsystem": "pdflatex",
        "font.family": "sans-serif",
        "text.usetex": False,
        "pgf.preamble": [
            r"\usepackage[utf8x]{inputenc}",
            r"\usepackage{tgheros}",  # TeX Gyre Heros sans serif
            r"\usepackage[T1]{fontenc}"
            ]
        }

mpl.rcParams.update(pgf_with_latex)
import matplotlib.pyplot as plt

fig = plt.figure(figsize=[3, 2])
ax = fig.add_subplot(111)
ax.set_yscale("log")
ax.minorticks_off()
ax.set_xlabel("sans-serif font label")
ax.set_ylabel("math font label")
plt.gca().set_ylim([1, 10000])
plt.gcf().tight_layout()


plt.savefig('{}.pdf'.format("test"))
Run Code Online (Sandbox Code Playgroud)

警告:必须在系统上安装TeX分发才能运行此分发.我使用了MikTex 2.9.还有Python 3.6.2和matplotlib 2.1.2.

python formatting plot latex matplotlib

7
推荐指数
1
解决办法
190
查看次数

VTK无法使用vtkClipClosedSurface构造适当的闭合曲面

以下是我所做的粗略解释vtk:

  1. 创建一个表面(一个最小的表面,与它不太相关,但几何结构很重要:陀螺仪有两个完全相互关闭的迷宫).
  2. vtkClipClosedSurface切断迷宫之一,使我得到了没有打开的表面的对象.一个规则的表面看起来是这样的,有一个封闭的表面看起来是这样.

这是我的问题:对于我的结构的更复杂的版本,我得到这个: 右下方的破损表面 你能看到它在左上角是如何正常工作的,靠近右下方它会停止创建曲面吗?有时我在最后一部分也会得到非常奇怪的三角形.

根据我的理解,vtkClipClosedSurface从表面法线知道在哪里关闭表面和不在哪里.问题是:我的结构的法线很好,它们都指向正确的方向.如果仔细观察结构,你会注意到下部基本上是顶部的反转,它逐渐变化,都在一个表面上.

我尝试修改我的结构,然后切割许多东西vtkSmoothPolyDataFilter,vtkCleanPolyData或者vtkPolyDataNormals.我甚至试图用边界表面提取vtkFeatureEdges,这导致了更糟糕的结果.甚至vtkFillHolesFilter没有产生任何可接受的结果.我的表面看起来完美无瑕,足以创造一个边界.

我不知道还有什么可以尝试的.其他结构也会发生这种情况.使用CAD工具修复它是不可能的,因为它应该是开箱即用的.请帮我!

这是几何不能正确关闭曲面的几何示例.这次我使用的vtkFillHolesFilter结果是结构内部的表面,而它们只应占据te对象的边界. 带错误的另一个几何体

如果你需要更详细的我的管道纲要,这里有:

  1. 使用创建表面 mayavi.mlab.contour3d
  2. 获得PolyData通过提取actor.mapper.input
  3. 将格式转换tvtk为常规格式vtk
  4. vtkClipClosedSurface 使用平面集合切除部分结构(当平面集合与结构边界相同时会发生错误)
  5. 想象它

编辑:好的,这没有得到足够的重视,所以我构建了一个最小的,完整的,可验证的工作示例来重现行为:

import numpy as np
import vtk  # VTK version 7.0
from mayavi import mlab  # mayavi version 4.4.4
from mayavi.api import Engine, OffScreenEngine
from tvtk.api import tvtk


def schwarz_D(x, y, z, linear_term=0): …
Run Code Online (Sandbox Code Playgroud)

python triangulation vtk python-3.x mayavi

6
推荐指数
1
解决办法
728
查看次数

匀称的parallel_offset 有时不会生成闭环

我正在使用包的parallel_offset功能shapely来获取一些封闭环多边形的偏移结构。我一次有几个多边形,许多具有相似的形状。然而,其中大约 10-25% 不会从parallel_offset. 这是一个不起作用的形状的 MWE:

import matplotlib.pyplot as plt
from shapely.geometry.polygon import LinearRing

def plot_line(ax, ob, color):
    x, y = ob.xy
    ax.plot(x, y, color=color, alpha=0.7, linewidth=3, 
            solid_capstyle='round', zorder=2)

polygon = [[-29.675, -30.675],
           [-28.4094, -29.4094],
           [-28.325, -29.325],
           [-28.325, -29.764],
           [-28.325, -29.7933],
           [-28.4587, -29.8274],
           [-28.4676, -29.8297],
           [-28.5956, -29.8814],
           [-28.6041, -29.8848],
           [-28.724, -29.953],
           [-28.732, -29.9576],
           [-28.8417, -30.0413],
           [-28.849, -30.0469],
           [-28.9466, -30.1445],
           [-28.9531, -30.151],
           [-29.0368, -30.2607],
           [-29.0424, -30.268],
           [-29.1106, -30.3879],
           [-29.1152, -30.3959],
           [-29.1669, -30.5239],
           [-29.1703, -30.5324],
           [-29.2044, -30.6661], …
Run Code Online (Sandbox Code Playgroud)

python plot geometry shape shapely

5
推荐指数
1
解决办法
2508
查看次数

在 matplotlib rc 中设置刻度线颜色

我想编写一个可调用的函数,为所有不同的图统一设置我的 matplotlib rc 参数。到目前为止,它只是我复制到每个文件的一个块,归结为:

import matplotlib as mpl

grey = '#808080'

mpl.rcParams['axes.linewidth'] = 0.3
mpl.rcParams['axes.edgecolor'] = grey
Run Code Online (Sandbox Code Playgroud)

我这样做是为了让轴更细,并通过让其他所有东西都变灰来突出我的数据。但是我找不到在 rc.local 中将刻度边缘颜色设置为灰色的方法。我正在寻找类似的东西

'axes.tickedgecolor'
Run Code Online (Sandbox Code Playgroud)

可悲的是,这似乎不存在。

这里描述了一种不使用 rc 的方法:Elegantly changed the color of a plot frame in matplotlib

希望有人能帮忙,谢谢!

编辑:只是为了澄清:我找到了选项

mpl.rcParams['tick.color'] = '#808080'
Run Code Online (Sandbox Code Playgroud)

但它也会改变刻度标签,我想保持黑色!

python plot colors matplotlib

4
推荐指数
1
解决办法
1154
查看次数