Kub*_*623 5 python latex matplotlib tikz
我正在尝试使用 tikzplotlib 保存图形。但是,我遇到了 AttributeError:“Legend”对象没有属性“_ncol”。我目前使用 tikzplotlib 版本 0.10.1 和 matplotlib 版本 3.7.0。不使用“plt.legend()”一切正常。
下面是一个不起作用的示例:
import numpy as np
import matplotlib.pyplot as plt
import tikzplotlib
# Data
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
# Plotting
plt.figure()
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)')
plt.plot(x, y3, label='tan(x)')
plt.legend()
# Save as TikZ file
tikzplotlib.save("plot.tikz")
Run Code Online (Sandbox Code Playgroud)
小智 11
嘿我有/遇到同样的问题,
问题是 matplotlib 3.6 的界面发生了变化。GitHub 上已经有一个针对 tikzplotlib 的修复程序 ( #558 ),但目前看来不会发生任何事情。不过,GitHub 上有一个针对该问题的解决方法(Issue)。它运作得很好。我希望这个答案很快就会过时。
为了完整起见,我将再次在此处添加代码。
def tikzplotlib_fix_ncols(obj):
"""
workaround for matplotlib 3.6 renamed legend's _ncol to _ncols, which breaks tikzplotlib
"""
if hasattr(obj, "_ncols"):
obj._ncol = obj._ncols
for child in obj.get_children():
tikzplotlib_fix_ncols(child)
Run Code Online (Sandbox Code Playgroud)
免责声明:这不是我的代码。但这个问题可能非常烦人,这就是我在这里分享代码的原因。作者是——
| 归档时间: |
|
| 查看次数: |
1972 次 |
| 最近记录: |