我需要获取matplotlib图的输出并将其转换为我可以在激光切割机上使用的SVG路径.
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,100,0.00001)
y = x*np.sin(2*pi*x)
plt.plot(y)
plt.show()
Run Code Online (Sandbox Code Playgroud)
例如,下面您会看到一个波形.我希望能够将此波形输出或保存为SVG路径,以后我可以在Adobe Illustrator等程序中使用该路径.
我知道一个名为"Cairo"的SVG库,matplotlib可以使用(matplotlib.use('Cairo')),但是我不清楚这会让我访问我需要的SVG路径,即使matplotlib现在将使用Cairo来生成绘图.

我确实有cairo在我的系统上工作,并且可以成功绘制一个由SVG路径组成的示例,我确实可以在Illustrator中编辑它,但是我没有办法将上面的等式转换为SVG路径.
import cairo
from cairo import SVGSurface, Context, Matrix
s = SVGSurface('example1.svg', WIDTH, HEIGHT)
c = Context(s)
# Transform to normal cartesian coordinate system
m = Matrix(yy=-1, y0=HEIGHT)
c.transform(m)
# Set a background color
c.save()
c.set_source_rgb(0.3, 0.3, 1.0)
c.paint()
c.restore()
# Draw some lines
c.move_to(0, 0)
c.line_to(2 * 72, 2* 72)
c.line_to(3 * 72, 1 * 72)
c.line_to(4 …Run Code Online (Sandbox Code Playgroud) 我试图用置信带绘制一些数据.我正在为每个数据流创建两个图:plot和fill_between.我希望图例看起来类似于图表,其中每个条目都有一个框(置信区域的颜色),中间有一条较暗的实线.到目前为止,我已经能够使用补丁来创建矩形图例键,但我不知道如何实现中心线.我尝试使用舱口,但无法控制位置,厚度或颜色.
我最初的想法是尝试组合两个补丁(Patch和2DLine); 然而,它还没有奏效.有更好的方法吗?我的MWE和当前数字如下所示.
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,1,11)
y = np.linspace(0,1,11)
plt.plot(x, y, c='r')
plt.fill_between(x, y-0.2, y+0.2, color='r', alpha=0.5)
p = mpatches.Patch(color='r', alpha=0.5, linewidth=0)
plt.legend((p,), ('Entry',))
Run Code Online (Sandbox Code Playgroud)
