How to use Tikz to calculate and use successive color values with text?











up vote
6
down vote

favorite
1












I'd like to use Tikz to algorithmically generate some text that has a color value based on calculations. Take the following, for example:



  documentclass{standalone}
usepackage{tikz}
begin{document}
begin{tikzpicture}
foreach i in {0, 1, ..., 10} {
draw (i, 0) node {textcolor[gray]{0.5}A};
}
end{tikzpicture}
end{document}


This displays a row of "A"s in a gray:



enter image description here



How do I go about calculating the 0.5 value to, for example, display this set of "A"s in varying levels of gray, such as a black to white gradient? Could I use this same method to calculate arbitrary RGB values?










share|improve this question







New contributor




Roxy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
























    up vote
    6
    down vote

    favorite
    1












    I'd like to use Tikz to algorithmically generate some text that has a color value based on calculations. Take the following, for example:



      documentclass{standalone}
    usepackage{tikz}
    begin{document}
    begin{tikzpicture}
    foreach i in {0, 1, ..., 10} {
    draw (i, 0) node {textcolor[gray]{0.5}A};
    }
    end{tikzpicture}
    end{document}


    This displays a row of "A"s in a gray:



    enter image description here



    How do I go about calculating the 0.5 value to, for example, display this set of "A"s in varying levels of gray, such as a black to white gradient? Could I use this same method to calculate arbitrary RGB values?










    share|improve this question







    New contributor




    Roxy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      up vote
      6
      down vote

      favorite
      1









      up vote
      6
      down vote

      favorite
      1






      1





      I'd like to use Tikz to algorithmically generate some text that has a color value based on calculations. Take the following, for example:



        documentclass{standalone}
      usepackage{tikz}
      begin{document}
      begin{tikzpicture}
      foreach i in {0, 1, ..., 10} {
      draw (i, 0) node {textcolor[gray]{0.5}A};
      }
      end{tikzpicture}
      end{document}


      This displays a row of "A"s in a gray:



      enter image description here



      How do I go about calculating the 0.5 value to, for example, display this set of "A"s in varying levels of gray, such as a black to white gradient? Could I use this same method to calculate arbitrary RGB values?










      share|improve this question







      New contributor




      Roxy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      I'd like to use Tikz to algorithmically generate some text that has a color value based on calculations. Take the following, for example:



        documentclass{standalone}
      usepackage{tikz}
      begin{document}
      begin{tikzpicture}
      foreach i in {0, 1, ..., 10} {
      draw (i, 0) node {textcolor[gray]{0.5}A};
      }
      end{tikzpicture}
      end{document}


      This displays a row of "A"s in a gray:



      enter image description here



      How do I go about calculating the 0.5 value to, for example, display this set of "A"s in varying levels of gray, such as a black to white gradient? Could I use this same method to calculate arbitrary RGB values?







      tikz-pgf color






      share|improve this question







      New contributor




      Roxy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question







      New contributor




      Roxy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question






      New contributor




      Roxy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 13 hours ago









      Roxy

      1632




      1632




      New contributor




      Roxy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Roxy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Roxy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          4 Answers
          4






          active

          oldest

          votes

















          up vote
          6
          down vote













          Yes, you can vary the gray levels, and the following can be used also to general non-gray colors.



          documentclass{standalone}
          usepackage{tikz}
          begin{document}
          begin{tikzpicture}
          foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
          draw (i, 0) node[text=gray!j!white] {A};
          }
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer




























            up vote
            4
            down vote













            You can evaluate a variable within the foreach loop itself (see page 904 of 3.0.1a manual).



            Here since you want to go from black to white, you can do:



            result



            documentclass{standalone}
            usepackage{tikz}
            begin{document}
            begin{tikzpicture}
            foreach i [evaluate=i as gradient using 100-i*10] in {0, 1, ..., 10} {
            draw (i, 0) node[text=black!gradient] {A};
            }
            end{tikzpicture}
            end{document}





            share|improve this answer




























              up vote
              2
              down vote













              A slightly different syntax than what marmot proposed, but with the same effects



              documentclass[tikz,border=3.14pt]{standalone}
              begin{document}
              begin{tikzpicture}
              draw foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
              (i, 0) node[text=gray!j!white] {A}
              };
              end{tikzpicture}
              end{document}





              share|improve this answer




























                up vote
                2
                down vote













                Just for fun, another foreach solution:



                documentclass{standalone}
                usepackage{tikz}
                begin{document}
                begin{tikzpicture}
                foreach i [count=j] in {0, 10, ..., 100} {
                draw (j, 0) node[text=blue!i!red] {A};
                }
                end{tikzpicture}
                end{document}


                enter image description here






                share|improve this answer





















                  Your Answer








                  StackExchange.ready(function() {
                  var channelOptions = {
                  tags: "".split(" "),
                  id: "85"
                  };
                  initTagRenderer("".split(" "), "".split(" "), channelOptions);

                  StackExchange.using("externalEditor", function() {
                  // Have to fire editor after snippets, if snippets enabled
                  if (StackExchange.settings.snippets.snippetsEnabled) {
                  StackExchange.using("snippets", function() {
                  createEditor();
                  });
                  }
                  else {
                  createEditor();
                  }
                  });

                  function createEditor() {
                  StackExchange.prepareEditor({
                  heartbeatType: 'answer',
                  convertImagesToLinks: false,
                  noModals: true,
                  showLowRepImageUploadWarning: true,
                  reputationToPostImages: null,
                  bindNavPrevention: true,
                  postfix: "",
                  imageUploader: {
                  brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                  contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                  allowUrls: true
                  },
                  onDemand: true,
                  discardSelector: ".discard-answer"
                  ,immediatelyShowMarkdownHelp:true
                  });


                  }
                  });






                  Roxy is a new contributor. Be nice, and check out our Code of Conduct.










                   

                  draft saved


                  draft discarded


















                  StackExchange.ready(
                  function () {
                  StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f461139%2fhow-to-use-tikz-to-calculate-and-use-successive-color-values-with-text%23new-answer', 'question_page');
                  }
                  );

                  Post as a guest















                  Required, but never shown

























                  4 Answers
                  4






                  active

                  oldest

                  votes








                  4 Answers
                  4






                  active

                  oldest

                  votes









                  active

                  oldest

                  votes






                  active

                  oldest

                  votes








                  up vote
                  6
                  down vote













                  Yes, you can vary the gray levels, and the following can be used also to general non-gray colors.



                  documentclass{standalone}
                  usepackage{tikz}
                  begin{document}
                  begin{tikzpicture}
                  foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                  draw (i, 0) node[text=gray!j!white] {A};
                  }
                  end{tikzpicture}
                  end{document}


                  enter image description here






                  share|improve this answer

























                    up vote
                    6
                    down vote













                    Yes, you can vary the gray levels, and the following can be used also to general non-gray colors.



                    documentclass{standalone}
                    usepackage{tikz}
                    begin{document}
                    begin{tikzpicture}
                    foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                    draw (i, 0) node[text=gray!j!white] {A};
                    }
                    end{tikzpicture}
                    end{document}


                    enter image description here






                    share|improve this answer























                      up vote
                      6
                      down vote










                      up vote
                      6
                      down vote









                      Yes, you can vary the gray levels, and the following can be used also to general non-gray colors.



                      documentclass{standalone}
                      usepackage{tikz}
                      begin{document}
                      begin{tikzpicture}
                      foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                      draw (i, 0) node[text=gray!j!white] {A};
                      }
                      end{tikzpicture}
                      end{document}


                      enter image description here






                      share|improve this answer












                      Yes, you can vary the gray levels, and the following can be used also to general non-gray colors.



                      documentclass{standalone}
                      usepackage{tikz}
                      begin{document}
                      begin{tikzpicture}
                      foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                      draw (i, 0) node[text=gray!j!white] {A};
                      }
                      end{tikzpicture}
                      end{document}


                      enter image description here







                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered 13 hours ago









                      marmot

                      76.9k487161




                      76.9k487161






















                          up vote
                          4
                          down vote













                          You can evaluate a variable within the foreach loop itself (see page 904 of 3.0.1a manual).



                          Here since you want to go from black to white, you can do:



                          result



                          documentclass{standalone}
                          usepackage{tikz}
                          begin{document}
                          begin{tikzpicture}
                          foreach i [evaluate=i as gradient using 100-i*10] in {0, 1, ..., 10} {
                          draw (i, 0) node[text=black!gradient] {A};
                          }
                          end{tikzpicture}
                          end{document}





                          share|improve this answer

























                            up vote
                            4
                            down vote













                            You can evaluate a variable within the foreach loop itself (see page 904 of 3.0.1a manual).



                            Here since you want to go from black to white, you can do:



                            result



                            documentclass{standalone}
                            usepackage{tikz}
                            begin{document}
                            begin{tikzpicture}
                            foreach i [evaluate=i as gradient using 100-i*10] in {0, 1, ..., 10} {
                            draw (i, 0) node[text=black!gradient] {A};
                            }
                            end{tikzpicture}
                            end{document}





                            share|improve this answer























                              up vote
                              4
                              down vote










                              up vote
                              4
                              down vote









                              You can evaluate a variable within the foreach loop itself (see page 904 of 3.0.1a manual).



                              Here since you want to go from black to white, you can do:



                              result



                              documentclass{standalone}
                              usepackage{tikz}
                              begin{document}
                              begin{tikzpicture}
                              foreach i [evaluate=i as gradient using 100-i*10] in {0, 1, ..., 10} {
                              draw (i, 0) node[text=black!gradient] {A};
                              }
                              end{tikzpicture}
                              end{document}





                              share|improve this answer












                              You can evaluate a variable within the foreach loop itself (see page 904 of 3.0.1a manual).



                              Here since you want to go from black to white, you can do:



                              result



                              documentclass{standalone}
                              usepackage{tikz}
                              begin{document}
                              begin{tikzpicture}
                              foreach i [evaluate=i as gradient using 100-i*10] in {0, 1, ..., 10} {
                              draw (i, 0) node[text=black!gradient] {A};
                              }
                              end{tikzpicture}
                              end{document}






                              share|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered 13 hours ago









                              AndréC

                              6,03711039




                              6,03711039






















                                  up vote
                                  2
                                  down vote













                                  A slightly different syntax than what marmot proposed, but with the same effects



                                  documentclass[tikz,border=3.14pt]{standalone}
                                  begin{document}
                                  begin{tikzpicture}
                                  draw foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                                  (i, 0) node[text=gray!j!white] {A}
                                  };
                                  end{tikzpicture}
                                  end{document}





                                  share|improve this answer

























                                    up vote
                                    2
                                    down vote













                                    A slightly different syntax than what marmot proposed, but with the same effects



                                    documentclass[tikz,border=3.14pt]{standalone}
                                    begin{document}
                                    begin{tikzpicture}
                                    draw foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                                    (i, 0) node[text=gray!j!white] {A}
                                    };
                                    end{tikzpicture}
                                    end{document}





                                    share|improve this answer























                                      up vote
                                      2
                                      down vote










                                      up vote
                                      2
                                      down vote









                                      A slightly different syntax than what marmot proposed, but with the same effects



                                      documentclass[tikz,border=3.14pt]{standalone}
                                      begin{document}
                                      begin{tikzpicture}
                                      draw foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                                      (i, 0) node[text=gray!j!white] {A}
                                      };
                                      end{tikzpicture}
                                      end{document}





                                      share|improve this answer












                                      A slightly different syntax than what marmot proposed, but with the same effects



                                      documentclass[tikz,border=3.14pt]{standalone}
                                      begin{document}
                                      begin{tikzpicture}
                                      draw foreach i [evaluate=i as j using {int(i*10)}] in {0, 1, ..., 10} {
                                      (i, 0) node[text=gray!j!white] {A}
                                      };
                                      end{tikzpicture}
                                      end{document}






                                      share|improve this answer












                                      share|improve this answer



                                      share|improve this answer










                                      answered 12 hours ago









                                      BambOo

                                      2,9361526




                                      2,9361526






















                                          up vote
                                          2
                                          down vote













                                          Just for fun, another foreach solution:



                                          documentclass{standalone}
                                          usepackage{tikz}
                                          begin{document}
                                          begin{tikzpicture}
                                          foreach i [count=j] in {0, 10, ..., 100} {
                                          draw (j, 0) node[text=blue!i!red] {A};
                                          }
                                          end{tikzpicture}
                                          end{document}


                                          enter image description here






                                          share|improve this answer

























                                            up vote
                                            2
                                            down vote













                                            Just for fun, another foreach solution:



                                            documentclass{standalone}
                                            usepackage{tikz}
                                            begin{document}
                                            begin{tikzpicture}
                                            foreach i [count=j] in {0, 10, ..., 100} {
                                            draw (j, 0) node[text=blue!i!red] {A};
                                            }
                                            end{tikzpicture}
                                            end{document}


                                            enter image description here






                                            share|improve this answer























                                              up vote
                                              2
                                              down vote










                                              up vote
                                              2
                                              down vote









                                              Just for fun, another foreach solution:



                                              documentclass{standalone}
                                              usepackage{tikz}
                                              begin{document}
                                              begin{tikzpicture}
                                              foreach i [count=j] in {0, 10, ..., 100} {
                                              draw (j, 0) node[text=blue!i!red] {A};
                                              }
                                              end{tikzpicture}
                                              end{document}


                                              enter image description here






                                              share|improve this answer












                                              Just for fun, another foreach solution:



                                              documentclass{standalone}
                                              usepackage{tikz}
                                              begin{document}
                                              begin{tikzpicture}
                                              foreach i [count=j] in {0, 10, ..., 100} {
                                              draw (j, 0) node[text=blue!i!red] {A};
                                              }
                                              end{tikzpicture}
                                              end{document}


                                              enter image description here







                                              share|improve this answer












                                              share|improve this answer



                                              share|improve this answer










                                              answered 8 hours ago









                                              Ignasi

                                              90.1k4163302




                                              90.1k4163302






















                                                  Roxy is a new contributor. Be nice, and check out our Code of Conduct.










                                                   

                                                  draft saved


                                                  draft discarded


















                                                  Roxy is a new contributor. Be nice, and check out our Code of Conduct.













                                                  Roxy is a new contributor. Be nice, and check out our Code of Conduct.












                                                  Roxy is a new contributor. Be nice, and check out our Code of Conduct.















                                                   


                                                  draft saved


                                                  draft discarded














                                                  StackExchange.ready(
                                                  function () {
                                                  StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f461139%2fhow-to-use-tikz-to-calculate-and-use-successive-color-values-with-text%23new-answer', 'question_page');
                                                  }
                                                  );

                                                  Post as a guest















                                                  Required, but never shown





















































                                                  Required, but never shown














                                                  Required, but never shown












                                                  Required, but never shown







                                                  Required, but never shown

































                                                  Required, but never shown














                                                  Required, but never shown












                                                  Required, but never shown







                                                  Required, but never shown







                                                  Popular posts from this blog

                                                  A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

                                                  Calculate evaluation metrics using cross_val_predict sklearn

                                                  Insert data from modal to MySQL (multiple modal on website)