4

このリンクには、ggplot の色を複製するための R コードがあります: Plotting family of functions with qplot without duplicate data

Pythonでコードを複製してみましたが、結果は正しくありません...

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import math
import colorsys

# function to return a list of hex colour strings
def colorMaker(n=12, start=15.0/360.0, saturation=1.0, valight=0.65) :
    listOfColours = []
    for i in range(n) :
        hue = math.modf(float(i)/float(n) + start)[0]
        #(r,g,b) = colorsys.hsv_to_rgb(hue, saturation, valight)
        (r,g,b) = colorsys.hls_to_rgb(hue, valight, saturation)
        listOfColours.append( '#%02x%02x%02x' % (int(r*255), int(g*255), int(b*255)) )
    return listOfColours

# made up data
x = np.array(range(20))
d = {}
d['y1'] = pd.Series(x, index=x)
d['y2'] = pd.Series(1.5*x + 1, index=x)
d['y3'] = pd.Series(2*x + 2, index=x)
df = pd.DataFrame(d)

# plot example
plt.figure(num=1, figsize=(10,5), dpi=100) # set default image size
colours = colorMaker(n=3)
df.plot(linewidth=2.0, color=colours)
fig = plt.gcf()
fig.savefig('test.png')

結果 ...

ここに画像の説明を入力

4

4 に答える 4

8

mpltoolsが非常にきちんとした matplotlib 拡張であることを確認する必要があります。hereを参照してください ggplot スタイルがあります。例(リンクから): ここに画像の説明を入力

于 2013-12-17T20:06:26.783 に答える
4

最近、美的に魅力的なプロットをより直接的な方法で作成するライブラリを matplotlib の上に構築するための統一的な取り組みについて、かなりの量の話がありました。現在、いくつかの選択肢があります。残念ながら、エコシステムは大きく断片化されています。

Jakob が言及した mpltools に加えて、次の 3 つを指摘したいと思います。

既に R の ggplot2 に精通している場合は、python-ggplot にかなり慣れているはずです。それに貢献することを心からお勧めします。個人的には、API をプロットするそのスタイルに頭を悩ませることはないと思います (これは ggplot ではなく、自分への批判です)。最後に、Seaborn と prettyplotlib をざっと見てみると、matplotlib から構築された便利な関数を提供するという点で、それらは mpltools に似ていると思います。

物事の音から、少なくとも pandas コミュニティは、seaborn と ggplot の成長により多くの努力を注いでいます。これには個人的に興奮しています。すべての取り組みは、matplotlib を置き換えるのではなく、その上に構築することであることに注意してください。MPL 開発者が過去 10 年間に作成した堅牢で一般的なフレームワークに、ほとんどの人 (自分自身を含む) が非常に感謝していると思います。

于 2013-12-18T17:03:10.327 に答える
1

HUSL 色空間の色相次元に沿って均等にサンプリングすることをお勧めします。これには、優れた軽量のPython パッケージがあります。これはシーボーンで使われているものです。

于 2013-12-24T20:55:55.243 に答える