2

GnuplotPy でいくつかのヒストグラムをプロットしています。ヒストグラム バーの色を変更したいと思います。(デフォルトでは、バーは赤です。)この StackOverflow 投稿の回答では、プレーンな Gnuplot でヒストグラム バーの色を変更する方法についていくつかのオプションが示されていますが、これらのソリューションを GnuplotPy で機能させることはできませんでした。

私が使用している基本的なセットアップは次のとおりです。

import Gnuplot

gp = Gnuplot.Gnuplot(persist = 1)
gp('set ylabel "Accuracy"')
gp('set format x " "') #remove the auto-generated xtics labels 
gp('set xtics scale 0') #remove xtic marks. 
gp(r'set xtics add ("Method 1" 0.15) ("Method 2" 1.15)')
dataToPlot = [6.9, 47.6]

gp('set style data histograms')
gp('set style fill solid 1.0 border -1')
plot1 = Gnuplot.PlotItems.Data(dataToPlot)

gp.plot(plot1)
gp.hardcopy('hist_example.eps',terminal = 'postscript', enhanced=1, color=1) #must come after plot() function
gp.reset() #must be placed after hardcopy()

上記のコードは、ヒストグラム バーの色を設定しようとせず、赤いバーのヒストグラムを生成します。

ここに画像の説明を入力


ヒストグラム バーの色を青に変更するためにいくつかのことを試しましたが、どれも成功していません。

まず、このスレッドの mgilson のアドバイスに従って、次の行を追加しようとしましたが、エラーがスローされ、バーはまだ赤くなります。

gp('set style lc rgb "blue"') #throws this error: line 0: expecting 'data', 'function', 'line', 'fill' or 'arrow'

また、コードに次の変更を加えてみましたが、プロットを作成せずにエラーがスローされました。

plot1 = Gnuplot.PlotItems.Data(dataToPlot, with_="linecolor rgb 'blue'")  #throws this error: plot "/var/folders/98/st7ct15n227g1p92mljkx93m0000gq/T/tmp875mRk.gnuplot/fifo" notitle with linecolor rgb 'blue' ^ line 0: expecting 'lines', 'points', 'linespoints', 'dots', 'impulses',    'yerrorbars', 'xerrorbars', 'xyerrorbars', 'steps', 'fsteps',   'histeps', 'filledcurves', 'boxes', 'boxerrorbars', 'boxxyerrorbars',   'vectors', 'financebars', 'candlesticks', 'errorlines', 'xerrorlines',  'yerrorlines', 'xyerrorlines', 'pm3d', 'labels', 'histograms',   'image', 'rgbimage'

では、GnuplotPy でヒストグラム バーの色を変更するにはどうすればよいですか?

4

1 に答える 1

1

おそらくうまくいく代替ハックは次のとおりです。

plot1 = Gnuplot.PlotItems.Data(dataToPlot, with_="histograms linecolor rgb 'blue'")

gnuplot-py次のような構文を許可する必要があるように思えます。

plot1 = Gnuplot.PlotItems.Data(dataToPlot, with_="histograms",linecolor="rgb 'blue'")

またはそのようなもの。現在、実験するのに適したテストケースがありません...

于 2012-12-14T13:37:55.310 に答える