I used J.M.s suggestion. Combining the plot of the function itself with parametric plots of independent "meshes" of the right color. I was plotting the dispersion relation for graphene, so my function was somewhat more complicated than the Sin[]
function in the help files of Mathematica. Thank you very much for your help. I am very pleased by what I came up with! Here is the code:
a = 1.42; (*carbon-carbon bond length in \[Angstrom]*)
d = a Sqrt[3];(*graphene lattice parameter,2.46, in \[Angstrom]*)
t = 2.8; (*hopping parameter*)
p = 25;(*points to plot*)
Show[Plot3D[
t Sqrt[3 + 2 Cos[a kx] + 4 Cos[a/2 kx] Cos[d/2 ky]], {kx, -((2 Pi)/ a), (2 Pi)/a}, {ky, -((2 Pi)/a), (2 Pi)/a},
ColorFunction -> "SunsetColors", BoundaryStyle -> None,
Mesh -> None, PlotPoints -> p ],
ParametricPlot3D[
Table[{kx, ky,
t Sqrt[3 + 2 Cos[a kx] + 4 Cos[a/2 kx] Cos[d/2 ky]]}, {ky, -((
2 Pi)/a), (2 Pi)/a, 1/2}], {kx, -((2 Pi)/a), (2 Pi)/a},
ColorFunction -> (ColorData["SunsetColors", #3] &),
PlotStyle -> Directive[Thickness[0.002]], PlotPoints -> p],
ParametricPlot3D[
Table[{kx, ky,
t Sqrt[3 + 2 Cos[a kx] + 4 Cos[a/2 kx] Cos[d/2 ky]]}, {kx, -((
2 Pi)/a), (2 Pi)/a, 1/2}], {ky, -((2 Pi)/a), (2 Pi)/a},
ColorFunction -> (ColorData["SunsetColors", #3] &),
PlotStyle -> Directive[Thickness[0.002]], PlotPoints -> p],
Plot3D[-t Sqrt[3 + 2 Cos[a kx] + 4 Cos[a/2 kx] Cos[d/2 ky]], {kx, -((
2 Pi)/a), (2 Pi)/a}, {ky, -((2 Pi)/a), (2 Pi)/a},
ColorFunction -> ColorData[{"SunsetColors", "Reverse"}],
BoundaryStyle -> None, Mesh -> None, PlotPoints -> p],
ParametricPlot3D[
Table[{kx,
ky, -t Sqrt[
3 + 2 Cos[a kx] + 4 Cos[a/2 kx] Cos[d/2 ky]]}, {ky, -((2 Pi)/
a), (2 Pi)/a, 1/2}], {kx, -((2 Pi)/a), (2 Pi)/a},
ColorFunction -> (ColorData[{"SunsetColors", "Reverse"}, #3] &),
PlotStyle -> Directive[Thickness[0.002]], PlotPoints -> p],
ParametricPlot3D[
Table[{kx, ky, -t Sqrt[ 3 + 2 Cos[a kx] + 4 Cos[a/2 kx] Cos[d/2 ky]]},
{kx, -((2 Pi)/ a), (2 Pi)/a, 1/2}],
{ky, -((2 Pi)/a), (2 Pi)/a},
ColorFunction -> (ColorData[{"SunsetColors", "Reverse"}, #3] &),
PlotStyle -> Directive[Thickness[0.002]], PlotPoints -> p],
PlotRange -> All, BoxRatios -> {1, 0.75, 0.75},
AxesLabel -> {Style[Subscript[k, x], Large, Bold],
Style[Subscript[k, y], Large, Bold],
Style[\[CapitalEpsilon][OverVector[k]], Large, Bold]},
ImageSize -> {800, 800}, ViewPoint -> {-3, -2, 0}]
(edit by J.M.)
Here's a slight simplification:
a = 1.42;(*carbon-carbon bond length in Å*)
t = 2.8;(*hopping parameter*)
p = 25;(*points to plot*)
n = 16;(*mesh lines*)
grapheneDispersion[a_, t_][kx_, ky_] :=
With[{d = a Sqrt[3](*graphene lattice parameter, 2.46, in Å*)},
t Sqrt[3 + 2 Cos[a kx] + 4 Cos[a/2 kx] Cos[d/2 ky]]];
Show[
Plot3D[grapheneDispersion[a, t][kx, ky], {kx, -2 Pi/a,
2 Pi/a}, {ky, -2 Pi/a, 2 Pi/a}, ColorFunction -> "SunsetColors",
BoundaryStyle -> None, Mesh -> None, PlotPoints -> p],
ParametricPlot3D[
Table[{kx, ky, grapheneDispersion[a, t][kx, ky]}, {ky, -2 Pi/a,
2 Pi/a, 4 Pi/a/n}], {kx, -2 Pi/a, 2 Pi/a},
ColorFunction -> (ColorData["SunsetColors", #3] &),
PlotStyle -> Directive[Thickness[0.002]], PlotPoints -> p],
ParametricPlot3D[
Table[{kx, ky, grapheneDispersion[a, t][kx, ky]}, {kx, -2 Pi/a,
2 Pi/a, 4 Pi/a/n}], {ky, -2 Pi/a, 2 Pi/a},
ColorFunction -> (ColorData["SunsetColors", #3] &),
PlotStyle -> Directive[Thickness[0.002]], PlotPoints -> p],
Plot3D[-grapheneDispersion[a, t][kx, ky], {kx, -2 Pi/a,
2 Pi/a}, {ky, -2 Pi/a, 2 Pi/a},
ColorFunction -> ColorData[{"SunsetColors", "Reverse"}],
BoundaryStyle -> None, Mesh -> None, PlotPoints -> p],
ParametricPlot3D[
Table[{kx, ky, -grapheneDispersion[a, t][kx, ky]}, {ky, -2 Pi/a,
2 Pi/a, 4 Pi/a/n}], {kx, -2 Pi/a, 2 Pi/a},
ColorFunction -> (ColorData[{"SunsetColors", "Reverse"}, #3] &),
PlotStyle -> Directive[Thickness[0.002]], PlotPoints -> p],
ParametricPlot3D[
Table[{kx, ky, -grapheneDispersion[a, t][kx, ky]}, {kx, -2 Pi/a,
2 Pi/a, 4 Pi/a/n}], {ky, -2 Pi/a, 2 Pi/a},
ColorFunction -> (ColorData[{"SunsetColors", "Reverse"}, #3] &),
PlotStyle -> Directive[Thickness[0.002]], PlotPoints -> p],
AxesLabel -> Evaluate[Style[#, Large, Bold] & /@ {Subscript[k, x],
Subscript[k, y], Ε[OverVector[k]]}],
BoxRatios -> {1, 0.75, 0.75}, ImageSize -> {800, 800},
PlotRange -> All, ViewPoint -> {-3, -2, 0}]
MeshStyle
acts more likePlotStyle
thanColorFunction
; thus, you'll need to use something likeParametricPlot3D[]
to get mesh lines with parameter-dependent coloring. $\endgroup$