Dynamically get different colors while building stacked bar graph in d3












0














I am trying to read a csv file in D3 and trying to build stacked bar graphs with 2 attributes, in the csv file I don't know how many unique values exist for a particular attribute. So depending on number of unique attributes I need that many different colors to draw stacked bar graph.



Is there any way to get different colors given an integer n like 10 or 15 in D3 or javascript?










share|improve this question
























  • read github.com/d3/d3-scale-chromatic, use the sequential colors or sample the rainbow scemes n times using a scaleLinear
    – rioV8
    Nov 21 at 0:15
















0














I am trying to read a csv file in D3 and trying to build stacked bar graphs with 2 attributes, in the csv file I don't know how many unique values exist for a particular attribute. So depending on number of unique attributes I need that many different colors to draw stacked bar graph.



Is there any way to get different colors given an integer n like 10 or 15 in D3 or javascript?










share|improve this question
























  • read github.com/d3/d3-scale-chromatic, use the sequential colors or sample the rainbow scemes n times using a scaleLinear
    – rioV8
    Nov 21 at 0:15














0












0








0







I am trying to read a csv file in D3 and trying to build stacked bar graphs with 2 attributes, in the csv file I don't know how many unique values exist for a particular attribute. So depending on number of unique attributes I need that many different colors to draw stacked bar graph.



Is there any way to get different colors given an integer n like 10 or 15 in D3 or javascript?










share|improve this question















I am trying to read a csv file in D3 and trying to build stacked bar graphs with 2 attributes, in the csv file I don't know how many unique values exist for a particular attribute. So depending on number of unique attributes I need that many different colors to draw stacked bar graph.



Is there any way to get different colors given an integer n like 10 or 15 in D3 or javascript?







javascript d3.js






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 20 at 21:56









Pritam Banerjee

10.6k64364




10.6k64364










asked Nov 20 at 21:31









Labeo

1,90752956




1,90752956












  • read github.com/d3/d3-scale-chromatic, use the sequential colors or sample the rainbow scemes n times using a scaleLinear
    – rioV8
    Nov 21 at 0:15


















  • read github.com/d3/d3-scale-chromatic, use the sequential colors or sample the rainbow scemes n times using a scaleLinear
    – rioV8
    Nov 21 at 0:15
















read github.com/d3/d3-scale-chromatic, use the sequential colors or sample the rainbow scemes n times using a scaleLinear
– rioV8
Nov 21 at 0:15




read github.com/d3/d3-scale-chromatic, use the sequential colors or sample the rainbow scemes n times using a scaleLinear
– rioV8
Nov 21 at 0:15












1 Answer
1






active

oldest

votes


















1














You may try the following approach:



function generatePallete(n) {
const scale = t => d3.interpolateSinebow(t * 0.85);
return d3.range(n).map(i => scale(i / n))
}


You can replace d3.interpolateSinebow with any other sequential scale. I multiplied t by 0.85 because d3.interpolateSinebow is cyclical and start end end colors are the same.



Here is an example of generated palletes:








share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    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',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    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
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53401859%2fdynamically-get-different-colors-while-building-stacked-bar-graph-in-d3%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    You may try the following approach:



    function generatePallete(n) {
    const scale = t => d3.interpolateSinebow(t * 0.85);
    return d3.range(n).map(i => scale(i / n))
    }


    You can replace d3.interpolateSinebow with any other sequential scale. I multiplied t by 0.85 because d3.interpolateSinebow is cyclical and start end end colors are the same.



    Here is an example of generated palletes:








    share|improve this answer




























      1














      You may try the following approach:



      function generatePallete(n) {
      const scale = t => d3.interpolateSinebow(t * 0.85);
      return d3.range(n).map(i => scale(i / n))
      }


      You can replace d3.interpolateSinebow with any other sequential scale. I multiplied t by 0.85 because d3.interpolateSinebow is cyclical and start end end colors are the same.



      Here is an example of generated palletes:








      share|improve this answer


























        1












        1








        1






        You may try the following approach:



        function generatePallete(n) {
        const scale = t => d3.interpolateSinebow(t * 0.85);
        return d3.range(n).map(i => scale(i / n))
        }


        You can replace d3.interpolateSinebow with any other sequential scale. I multiplied t by 0.85 because d3.interpolateSinebow is cyclical and start end end colors are the same.



        Here is an example of generated palletes:








        share|improve this answer














        You may try the following approach:



        function generatePallete(n) {
        const scale = t => d3.interpolateSinebow(t * 0.85);
        return d3.range(n).map(i => scale(i / n))
        }


        You can replace d3.interpolateSinebow with any other sequential scale. I multiplied t by 0.85 because d3.interpolateSinebow is cyclical and start end end colors are the same.



        Here is an example of generated palletes:









        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 21 at 14:46

























        answered Nov 21 at 12:38









        Yaroslav Sergienko

        40016




        40016






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53401859%2fdynamically-get-different-colors-while-building-stacked-bar-graph-in-d3%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

            Wiesbaden

            Marschland

            Dieringhausen