latex绘图填充区域颜色问题

发布于 2024-08-12 22:35:00

如图所示,第一象限填充颜色下边界为绘制的曲线,如何填充?图像如下:pic1.png
代码如下:documentclass[12pt]{article}
usepackage{tikz}
usepackage{amsmath}

begin{document}


\begin{tikzpicture}[samples=1000,scale=1.5,xscale=1, yscale=1]
    
    \draw[thick,->] (-3.5,0) -- (3.5,0) node at(3.35,-0.2) {$x$};
    \draw[thick,->] (0,-2.5) -- (0,2.5) node at(0.2,2.3) {$y$};
    
    \draw[semithick,domain=-1.25:1.25]plot({tan(\x r)},\x);
    \draw[dashed](-3,pi/2)--(3,pi/2)(-3,-pi/2)--(3,-pi/2);
    
    \fill[red!30,opacity=0.3] (0,0)--({tan(\x r)},\x)--(2.8,pi/2) --(0,pi/2) --(0,0)-- cycle;
\end{tikzpicture}

end{document}

查看更多

关注者
0
被浏览
2k
3 个回答
Sagittarius Rover
Sagittarius Rover 2024-08-12
这家伙很懒,什么也没写!

可以利用pgfplots的方法实现...建议参考pgfplots文档P104的做法。下面是MWE和效果。
image.png

\documentclass[tikz,border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepgfplotslibrary{fillbetween}
\usepackage{amsmath}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[
            axis lines=middle,
            axis on top,
            xtick = \empty,
            ytick = \empty,
            xlabel = {$x$},
            ylabel = {$y$},
            xmin=-2.0, xmax=2.0,
            ymin=-2.5, ymax=2.5,
            samples=1000]
            \addplot[semithick,name path=A] ({x},{rad(atan(x))});
            \path[name path=B] (0,pi/2) -- (1.8,pi/2);
            \draw[dashed](-3,pi/2)--(3,pi/2)(-3,-pi/2)--(3,-pi/2);
            \addplot[red!30,opacity=.3] fill between[of=A and B,soft clip={(0,0) rectangle (1.8,2)}];
        \end{axis}
    \end{tikzpicture}
    
\end{document}

image.png

鱼香肉丝没有鱼先生
脾气不好,别来惹我!!!

\fill 需要一条封闭路径

\fill[red!30,opacity=0.3] (0,0)-- plot[domain=0:1.25] ({tan(\x r)},\x)--(3, pi/2) -- (0, pi/2) -- cycle;
\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{amsmath}

\begin{document}


\begin{tikzpicture}[samples=1000,scale=1.5,xscale=1, yscale=1]
    
    \draw[thick,->] (-3.5,0) -- (3.5,0) node at(3.35,-0.2) {$x$};
    \draw[thick,->] (0,-2.5) -- (0,2.5) node at(0.2,2.3) {$y$};
    
    \draw[semithick,domain=-1.25:1.25]plot({tan(\x r)},\x);
    \draw[dashed](-3,pi/2)--(3,pi/2) (-3,-pi/2)--(3,-pi/2);
    
    \fill[red!30,opacity=0.3] (0,0)-- plot[domain=0:1.25] ({tan(\x r)},\x)--(3, pi/2) -- (0, pi/2) -- cycle;
\end{tikzpicture}
\end{document}

image.png

Sagittarius Rover
Sagittarius Rover 2026-06-12
这家伙很懒,什么也没写!

Here below is the proposal based on luadraw:

Example A

\documentclass[border=5pt]{standalone}
\usepackage{fourier-otf}
\usepackage{luadraw}
\begin{document}
    \begin{luadraw}{name=fillarea}
    local ld = luadraw
    local g = ld.graph:new{
        window={-2.5,2.5,-2.5,2.5,2,1},
        size={8,10},margin=0.25
    }
    local pi,f = math.pi,math.atan
    local h = function() return pi/2 end
    g:Filloptions("full","red!30",0.3)
    g:Linestyle("noline")
    g:Ddomain2(f,h,{x={0,2}})
    g:Lineoptions("dashed","black",4)
    g:Filloptions("none",nil,1)
    g:DlineEq(0,1,-pi/2)
    g:DlineEq(0,1,pi/2)
    g:Lineoptions("solid","black",6)
    g:Dcartesian(f,{x={-2,2}})
    g:Daxes({0,1,1},{labelpos={"none","none"},originpos={"none","none"},xyticks={0,0},legend={"$x$","$y$"},arrows="-Stealth"})
    g:Show()
    \end{luadraw}
\end{document}

image.png

Example B

\documentclass[border=5pt]{standalone}
\usepackage{fourier-otf}
\usepackage{luadraw}
\usepackage[svgnames]{xcolor}
\begin{document}
    \begin{luadraw}{name=gradbox}
        local ld = luadraw
        local g = ld.graph:new{window={-5,4,-5.5,5},size={10,10}}
        local i, pi = ld.cpx.I, math.pi
        local h = function(x) return x^2/2-2 end
        local f = function(x) return math.sin(3*x)+h(x) end
        g:Dgradbox(
            {-pi-4*i,pi+4*i,pi/3,1},
            {
                grid=true,originloc=0,
                originnum={0,0},
                labeltext={"\\pi",""}, 
                labelden={3,1}, 
                title="\\textbf{Title}", 
                legend={"Legend $x$","Legend $y$"}
            }
        )
        g:Filloptions("full","blue",0.6); g:Linestyle("noline")
        g:Ddomain2(f,h,{x={-pi/2,2*pi/3}}) 
        g:Filloptions("none",nil,1); g:Lineoptions("solid",nil,8)
        g:Dcartesian(h,{x={-pi,pi}, draw_options="DarkBlue"}) 
        g:Dcartesian(f,{x={-pi,pi},draw_options="Crimson"})
        g:Show()
    \end{luadraw}
\end{document}

image.png

Example C

\documentclass[border=5pt]{standalone}
\usepackage{fourier-otf}
\usepackage{luadraw}
\usepackage[svgnames]{xcolor}
\begin{document}
    \begin{luadraw}{name=implicit_inequalities}
        local ld = luadraw
        local cpx = ld.cpx
        local Z = cpx.Z
        local g = ld.graph:new{ window = {-3, 4, -3, 5}, size = {10, 10} }
        local f1 = function(x,y) return -x*y+y^2-x^2-1 end
        local f2 = function(x,y) return x^3-x-y^2+4 end
        local filloptions = "draw=none,pattern= north west lines, pattern color=cyan"
        g:Daxes( {0,1,1},{grid=true,gridstyle="dashed",xyticks={0,0},arrows="-Stealth"})
        g:Dimplicit_inequalities( 
            {f1,'<',f2,">"}, 
            {view={-2,5,-5,5}, draw_options=filloptions}
        ) 
        g:Dimplicit(f1, {draw_options="red,thick"})
        g:Dimplicit(f2, {view={-2,5,-5,5}, draw_options="violet,thick"})
        local eq = \luastringO{$\begin{cases}y^2-x^2-xy < 1\\ x^3-x+4 > y^2\end{cases}$} 
        g:Dlabel( eq, Z(2.25,1), {node_options="fill=white"})
        g:Show()
    \end{luadraw}
\end{document}

image.png

Example D

\documentclass[multi={luadraw},border=5pt]{standalone}
\usepackage[svgnames]{xcolor}
\usepackage{luadraw}
\usepackage{fourier-otf}

\begin{document}
    \begin{luadraw}{name=implicit_inequalities1}
        local ld = luadraw
        local cpx = ld.cpx
        local Z = cpx.Z
        local g = ld.graph:new{ window = {-3, 4, -2, 6}, size = {10, 10} }
        g:Daxes({0,1,1}, {grid=true, gridstyle = "dashed",arrows="-Stealth", legend={"$x$","$y$"}})
        local f1 = function(x,y) return x^2 + y^2 - 2*x - 4*y - 4 end
        local f2 = function(x,y) return y-math.sin(8*x)  end
        local f3 = function(x,y) return math.sin(8*x)  end
        local filloptions = "draw=none,pattern= north west lines, pattern color=cyan"
        g:Dimplicit_inequalities( {f1,'<',f2,">"}, {grid={100,100}, draw_options=filloptions})
        g:Dimplicit(f1, {draw_options="red,thick"})
        g:Dcartesian(f3, {draw_options="blue"});
        g:Show()
    \end{luadraw}

    \begin{luadraw}{name=implicit_inequalities2}
        local ld = luadraw
        local cpx = ld.cpx
        local Z = cpx.Z
        local g = ld.graph:new{ window = {-3, 4, -2, 6}, size = {10, 10} }
        g:Daxes({0,1,1}, {grid=true, gridstyle = "dashed",arrows="-Stealth", legend={"$x$","$y$"}})
        local f1 = function(x,y) return x^2 + y^2 - 2*x - 4*y - 4 end
        local f2 = function(x,y) return y-math.sin(8*x)  end
        local f3 = function(x,y) return math.sin(8*x)  end
        local filloptions = "draw=none,pattern= north west lines, pattern color=cyan"
        g:Dimplicit_inequalities( {f1,'<',f2,"<"}, {grid={100,100}, draw_options=filloptions})
        g:Dimplicit(f1, {draw_options="red,thick"})
        g:Dcartesian(f3, {draw_options="blue"});
        g:Show()
    \end{luadraw}
\end{document} 

image.png

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览