tikzplotlib 设置不匹配

tikzplotlib 设置不匹配

我正在尝试将 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 图也是散点图,但是scatterpgfplots 中的键仅用于更改标记外观,而不是实际创建散点图(例如,与线图相反)。从手动的,第 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 代码中影响输出就更好了,但我不确定该怎么做。但是,如果数据不变,并且图的数量有限,那么修改生成的代码似乎是一种可行的方法。

相关内容