10

私は pandas と matplotlib を使用して、たくさんの棒グラフを生成しています。

選択した色のリストを循環する方法を知っています ( pandas/matplotlib 棒グラフにカスタム色を与える方法)。問題は、私のグラフが紙 (研究論文用) にきれいに印刷されるように、どの色を選択するかです。私が最も興味を持っているのは、柱と快適に見える色の選択との間の十分なコントラストです. グレースケールや単一色相の配色ではなく、複数の色を使用したいと考えています。

人々が使用するものから選択する、あらかじめ決められたスキームはありますか?

4

3 に答える 3

20

したがって、あなたの要件は「多くの色」と「印刷時に2つの色が同じグレースケール値にマッピングされてはならない」ということですよね? 2 番目の基準は、「順次」カラーマップ (輝度が単調に増加または減少する) によって満たされる必要があります。cubehelixmatplotlib のすべての選択肢のうち、 (既に言及されている)、gnuplot、およびが残っていると思いますgnuplot2

輝度と色相を示す 3 つのカラーマップ

白い線は各色の輝度であるため、印刷時に各色が異なるグレースケール値にマッピングされることがわかります。黒い線は色相で、さまざまな色が循環していることを示しています。

キューブヘリックスは実際には関数 ( ) であり、ここに示すようfrom matplotlib._cm import cubehelixに、らせんのパラメータを調整して、より広範囲に変化する色を生成できることに注意してください。つまり、cubehelix はカラーマップではなく、カラーマップのファミリーです。2 つのバリエーションを次に示します。

ここに画像の説明を入力

ここに画像の説明を入力

それほど大きく変化しない色 (多くの場合はより快適ですが、棒グラフには適していない可能性があります) については、ColorBrewer の 3 色マップ , YlOrRd,PuBuGnを試してくださいYlGnBu:

輝度は単調だが色相の変化が少ない 3 つのカラーマップ

https://www.flickr.com/photos/omegatron/7298887952/

ただし、棒グラフを識別するためにこの色だけを使用することはお勧めしません。主要な識別子として常にテキスト ラベルを使用する必要があります。また、これらの一部は、チャートの色ではなくヒートマップを対象としているため、背景に完全に溶け込む白いバーを生成することに注意してください。

from matplotlib import pyplot as plt
import pandas, numpy as np  # I find np.random.randint to be better

# Make the data
x = [{i:np.random.randint(1,5)} for i in range(10)]
df = pandas.DataFrame(x)

# Make a list by cycling through the colors you care about
# to match the length of your data.
cmap = plt.get_cmap('cubehelix')
indices = np.linspace(0, cmap.N, len(x))
my_colors = [cmap(int(i)) for i in indices]

# Specify this list of colors as the `color` option to `plot`.
df.plot(kind='bar', stacked=True, color=my_colors)
gnuplot 棒グラフ gnuplot2 棒グラフ キューブヘリックス棒グラフ YlGnBu棒グラフ

そして、これらは新しい人たちです:

新人カラーバー viridis 棒グラフ
于 2013-03-25T19:38:22.717 に答える
14

1.5 では、matplotlib には合理的に設計された 4 つの新しいカラー マップが同梱されます。

  • 'viridis'(2.0 以降のデフォルトのカラーマップ)
  • 'magma'
  • 'plasma'
  • 'inferno'.

これらのカラー マップを設計するプロセスは、Matplotlib のより優れた既定のカラーマップ | に示されています。SciPy 2015 .

ここに画像の説明を入力

このプロセス用に開発されたツールは、 によってインストールできますpip install viscm


cubehelixカラーマップを提案します。カラーとグレースケールの両方で正しい明度の順序を持​​つように設計されています

于 2012-12-21T02:55:08.243 に答える
5

あらかじめ決められたスキームを知りません。私は通常、出版物のプロットにいくつかの色を使用します。色を選ぶとき、私は主に2つのことを考慮に入れます:

  1. 色覚異常:ウィキペディアのこのページには、ほとんどの色覚異常の人が区別できる色の選択に関する多くの有益な情報があります。「編集者向けのヒント」セクションに気付いた場合は、ガイドラインを考慮に入れると、使用できる色のセットはごくわずかです。(経験則として、赤と緑を混ぜないでください!)リンクされた色覚異常シミュレーターを使用して、プロットがよく見えるかどうかを確認することもできます。
  2. 輝度:私の分野のほとんどのジャーナルは、デフォルトでB&Wで発行されます。ほとんどの人がオンラインで論文を読んでいますが、グレースケールで印刷したときにプロットが理解できることを確認したいと思います。そのため、輝度の異なる色を使用するように注意しています。テストするには、生成された画像の彩度を下げるだけで、グレースケールで印刷したときにどのように見えるかがわかります。多くの場合(特に線または散布図)、セットを区別するために色以外のものも使用します(たとえば、線のスタイル、異なるマーカー)。

matplotlibプロットで色が指定されていない場合、循環するデフォルトの色のセットがあります。この回答には、デフォルトの色のセットを変更する方法についての適切な説明があります。好みの色のセットにカスタマイズできるので、プロットはそれらを順番に使用します。

于 2012-12-20T09:45:35.343 に答える