Como plotar uma função de duas variáveis em 2D?
Diga que tenho uma função $y = ax^2$. Eu quero um enredo de '$y$'vs'$x$'. Aqui '$a$'é um parâmetro. Posso definir diferentes valores de '$a$'e obter alguns conjuntos separados de gráficos pelo seguinte comando:
Plot[{1*x^2, 2*x^2, 3*x^2},{x,0,10}]
onde eu coloco $a= 1,2,3$valores. Mas os enredos aqui são desconexos, pois$a$não assume valores contínuos. O que eu quero é obter um enredo de '$y$'vs'$x$'variando'$a$'continuamente entre $1$ para $3$. Como eu faço isso?
Observe que DensityPlot[a*x^2,{x,0,10},{a,1,3}]dá um gráfico com '$a$'como eixo y e'$x$'como eixo x. Não é isso que eu quero. Também usando o comando Manipulate[Plot[a*x^2,{x,0,10}],{a,1,3}], obtemos uma imagem em movimento. Novamente, não é o que eu preciso.
Espero ter esclarecido qual é a minha exigência. Não consegui encontrar este problema online. Eu vi que isso pode ser feito em alguns jornais. Alguma ideia?
Respostas
Você pode tentar ParametricPlot:
ParametricPlot[{x, a x^2}, {x, 0, 10}, {a, 1, 3}, AspectRatio -> 1]
Você pode destacar as linhas correspondentes a valores específicos de auso das opções MeshFunctionse Mesh:
alist = {1, 2, 3};
colors = Opacity[1, #] & /@ {Red, Green, Purple};
mesh = Thread[{alist, Directive[Thick, #] & /@ colors}];
ParametricPlot[{x, a x^2}, {x, 0, 10}, {a, 1, 3}, AspectRatio -> 1,
PlotStyle -> LightOrange,
BoundaryStyle -> None,
MeshFunctions -> {#4 &},
Mesh -> {mesh},
PlotLegends ->
LineLegend[colors, alist, LegendLabel -> Style["a = ", 16]]]
Aqui, damos um exemplo que Fillingnem sempre é fácil de manusear. Portanto, temos que usar ParametricPlotouParametricRegion
f[x_, a_] = Sin[x + a] ((a - 1) (a - 3) + x);
curves = Plot[Table[f[x, a], {a, 1, 3, .1}] // Evaluate, {x, -2, 2},
AspectRatio -> 1];
region = ParametricPlot[{x, f[x, a]}, {a, 1, 3}, {x, -2, 2},
PlotStyle -> Directive[Opacity[0.2], Yellow]];
Show[curves, region]
Com base na resposta de @kglr, mas usando a opção ColorFunctionem ParametricPlot. Basicamente, os argumentos de ColorFunctionsão as coordenadas cartesianas reais (que chamei xxe yy) seguidas pelas variáveis de parâmetro (neste caso xe a):
{xMin, xMax} = {0, 10};
{aMin, aMax} = {1, 3};
ital[str_] := Style[str, Italic];
ParametricPlot[
{x, a x^2}
, {x, xMin, xMax}
, {a, aMin, aMax}
, AspectRatio -> 1 / GoldenRatio
, ColorFunction -> Function[{xx, yy, x, a}, Hue[a]]
, FrameLabel -> ital /@ {"x", "y"}
, LabelStyle -> Directive[Black, 14]
, RotateLabel -> False
, PlotLabel -> ital["y"] == ital["a"] ital["x"]^2
, PlotLegends -> Placed[
BarLegend[{Hue, {aMin, aMax}}
, LegendLabel -> ital["a"]
, LegendLayout -> "Column"
],
After
]
]
Após a resposta de @kglr, encontrei outra solução:
Plot[{x^2, 3*x^2}, {x, 0, 10}, Filling -> {1 -> {2}}]
Isso gera: