我正在尝试在 Tikz/pgfplots 中重新创建使用 Matplotlib 制作的以下图像。
到目前为止,我已经成功地使用 pgfplots 3d 曲面图重新创建了以下内容,但存在一个问题:我正在使用如上所述的显式着色这里(并从 Python 生成的以分号分隔的 CSV 文件中加载我的数据,该文件可以找到这里),但当我使用着色器选项 flat 时,pgfplots 会在相邻颜色之间应用平滑处理,这绝对不是我想要的(颜色代表整数值)。有没有办法在 pgfplots 中禁用此行为?到目前为止,我一无所获。任何帮助都将不胜感激!
梅威瑟:
\documentclass{article}
% Import packages
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis} [
axis line style={draw=none},
axis equal image,
ticks=none,
view={20}{20},
clip=false,
width=120mm,
xmin = -1,
xmax = 1,
ymin = -1,
ymax = 1,
zmin = -1,
zmax = 1,
]
% Sphere plot
\addplot3 [surf, mesh/rows=30, mesh/color input=explicit, shader=flat] table [
x=x, y=y, z=z, meta=c, col sep=semicolon,
] {xyz_coords_c_vals_30_60.csv};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
没关系,我肯定是没注意到:我发现还有一个选项shader=flat corner
(感谢这帖子)。解决了我所有的问题。
工作 MWE(添加xyz_coords_c_vals.csv
来自这里并将其添加到同一目录/文件夹):
\documentclass{article}
% Import packages
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis} [
axis line style={draw=none},
axis equal image,
ticks=none,
view={20}{20},
clip=false,
width=120mm,
xmin = -1,
xmax = 1,
ymin = -1,
ymax = 1,
zmin = -1,
zmax = 1,
]
% Sphere plot
\addplot3 [surf, mesh/rows=30, mesh/color input=explicit, shader=flat corner] table [
x=x, y=y, z=z, meta=c, col sep=semicolon,
] {xyz_coords_c_vals_30_60.csv};
\end{axis}
\end{tikzpicture}
\end{document}