我正在尝试将 matplotlib 图转换为 tikz。这相当简单:
plt.figure(dpi=100)
plt.xticks([], [])
plt.yticks([], [])
plt.scatter([d[0] for d in towns], [d[1] for d in towns], color="#489427", s=0.3)
# plt.savefig("pcb3038.svg")
import tikzplotlib
# tikzplotlib.save("test.tex")
tikzplotlib.get_tikz_code()
乳胶中的结果显示
而 matplotlib 显示
我更喜欢下面这个,但不知何故 tikz 并没有这样解释。
答案1
转换将键tikzplotlib
添加scatter
到图中。这似乎很有意义,因为 matplotlib 图也是散点图,但是scatter
pgfplots 中的键仅用于更改标记外观,而不是实际创建散点图(例如,与线图相反)。从手动的,第 108 页:
关键
scatter
是一个简单的布尔变量,可以修改标记。它仅适用于标记,并且可以与任何其他绘图类型结合使用。
在这种情况下你不是想要修改标记(即颜色)。因此,您可以编辑生成的pgfplots
代码以删除该scatter
键。对于点的大小,您可以使用该mark size
键。
Python MWE,经过修改以显示一些虚拟数据:
import matplotlib.pyplot as plt
towns = list()
for i in range(0,3000,100):
for j in range(0,4000,100):
towns.append([i,j])
plt.figure(dpi=100)
plt.xticks([], [])
plt.yticks([], [])
plt.scatter([d[0] for d in towns], [d[1] for d in towns], color="#489427", s=0.3)
import tikzplotlib
tikzplotlib.save("mplscatter.tex")
修改后的.tex
输出:
% This file was created by tikzplotlib v0.9.8.
\begin{tikzpicture}
\definecolor{color0}{rgb}{0.282352941176471,0.580392156862745,0.152941176470588}
\begin{axis}[
tick pos=left,
xmin=-145, xmax=3045,
ymin=-195, ymax=4095
]
%%% MODIFIED THE LINE BELOW
\addplot [draw=color0, fill=color0, mark=*, only marks, mark size=1pt]%, scatter]
table{%
x y
0 0
0 100
0 200
% ...
结果:
请注意,当然,如果能tikzplotlib
在 Python 代码中影响输出就更好了,但我不确定该怎么做。但是,如果数据不变,并且图的数量有限,那么修改生成的代码似乎是一种可行的方法。