Why not just using ContourPlot
?
eq = -1.94178*10^24*H*Te^0.5 - (3.2*(7.33376*10^27*Te^(7/2) + 4.66533*10^24*Ti^(7/2)))/
(10^9*H) + 7.68161*10^40*H*(5.41/((10^15*E^(148/Ti))*Ti^(3/2)) +
2.00122/((10^10*E^((53.124*(1 - (-0.059357*Ti + 0.0010404*Ti^2 - (9.1653*Ti^3)/10^6)/
(1 + 0.20165*Ti + 0.0027621*Ti^2 + (9.8305*Ti^3)/10^7))^(1/3))/Ti^(1/3)))*
(Ti^(2/3)*(1 - (-0.059357*Ti + 0.0010404*Ti^2 - (9.1653*Ti^3)/10^6)/
(1 + 0.20165*Ti + 0.0027621*Ti^2 + (9.8305*Ti^3)/10^7))^(5/6))));
sol = H /. Solve[eq == 0, H] // Simplify;
Now we can plot:
ContourPlot[sol[[2]], {Ti, 1, 2000}, {Te, 1, 200},
Contours -> Range[15], ColorFunction -> "IslandColors",
PlotPoints -> 100,
FrameLabel -> {Style["\!\(\*SubscriptBox[\(T\), \(i\)]\)(keV)",
FontSize -> 14, FontFamily -> "Times"],
Style["\!\(\*SubscriptBox[\(T\), \(e\)]\)(keV)", FontSize -> 14,
FontFamily -> "Times"]},
LabelStyle -> {Directive[Black, Bold], (FontSize -> 16),
FontFamily -> "Times"}]
I plotted sol[[2]]
because sol[[1]]
corresponds to negative contour levels.
EDIT
It is possible also plot this eq
in 3D:
ContourPlot3D[eq == 0, {Ti, 1, 2000}, {Te, 1, 200}, {H, 1, 15},
MeshFunctions -> (#3 &), Mesh -> {Range[15]},
AxesLabel -> {Style["\!\(\*SubscriptBox[\(T\), \(i\)]\)(keV)",
FontSize -> 14, FontFamily -> "Times"],
Style["\!\(\*SubscriptBox[\(T\), \(e\)]\)(keV)", FontSize -> 14,
FontFamily -> "Times"],
Style["H", FontSize -> 14, FontFamily -> "Times"]},
LabelStyle -> Directive[Black, Bold],
BaseStyle ->
Directive[Black, Bold, FontSize -> 14, FontFamily -> "Times"],
ColorFunction -> (ColorData["IslandColors"][#3] &)]
EDIT 2
Without solving original equation eq
for H
, we can plot contours of eq == 0
for specific values of H
:
ClearAll[eq];
eq[H_] := -1.94178*10^24*H*Te^0.5 - (3.2*(7.33376*10^27*Te^(7/2) + 4.66533*10^24*Ti^(7/2)))/
(10^9*H) + 7.68161*10^40*H*(5.41/((10^15*E^(148/Ti))*Ti^(3/2)) +
2.00122/((10^10*E^((53.124*(1 - (-0.059357*Ti + 0.0010404*Ti^2 - (9.1653*Ti^3)/10^6)/
(1 + 0.20165*Ti + 0.0027621*Ti^2 + (9.8305*Ti^3)/10^7))^(1/3))/Ti^(1/3)))*
(Ti^(2/3)*(1 - (-0.059357*Ti + 0.0010404*Ti^2 - (9.1653*Ti^3)/10^6)/
(1 + 0.20165*Ti + 0.0027621*Ti^2 + (9.8305*Ti^3)/10^7))^(5/6))));
ContourPlot[Evaluate@eq[Range[15]], {Ti, 1, 2000}, {Te, 1, 200},
ContourStyle -> ColorData["IslandColors"] /@ Rescale[Range[15]],
PlotLegends ->
BarLegend[{"IslandColors", {1, 15}}, Range[15], LegendLabel -> "H",
LegendMarkerSize -> 300,
LabelStyle -> Directive[Black, Bold, FontFamily -> "Times", 14]],
FrameStyle -> Directive[Black, Bold, 14, FontFamily -> "Times"],
FrameLabel -> {"\!\(\*SubscriptBox[\(T\), \(i\)]\)(keV)",
"\!\(\*SubscriptBox[\(T\), \(e\)]\)(keV)"}, PlotPoints -> 50]
For b&w plot one can use ContourStyle
option and adjust thickness and dashing (here I borrowed dashing patterns from PlotTheme -> "Monochrome"
and added two types of thickness):
ContourPlot[Evaluate@eq[Range[15]], {Ti, 1, 2000}, {Te, 1, 200},
ContourStyle ->
Directive @@@
Tuples[{{Black}, {Thickness[Medium],
Thickness[Large]}, {AbsoluteDashing[{}],
AbsoluteDashing[{6, 2}], AbsoluteDashing[{2, 2}],
AbsoluteDashing[{6, 2, 2, 2}], AbsoluteDashing[{12, 2}],
AbsoluteDashing[{12, 2, 2, 2, 2, 2}],
AbsoluteDashing[{24, 2, 8, 2}],
AbsoluteDashing[{24, 2, 2, 2}]}}],
PlotLegends -> (Row[{HoldForm@H, "\[ThinSpace]=\[ThinSpace]", #}] & /@
Range[15]),
FrameStyle -> Directive[Black, Bold, 14, FontFamily -> "Times"],
FrameLabel -> {"\!\(\*SubscriptBox[\(T\), \(i\)]\)(keV)",
"\!\(\*SubscriptBox[\(T\), \(e\)]\)(keV)"}, PlotPoints -> 50,
LabelStyle -> Directive[Black, Bold, FontFamily -> "Times", 14]]