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 回答