我想使用 Gnuplot 绘制一种数据透视图。所以我需要忽略文件中的一些数据行。我尝试了以下方法:
unset key
set xtics font "Times-Roman, 5"
set ytics font "Times-Roman, 5"
set multiplot layout 4,3 #title "Multiplots\n"
plot [7:50][0:1] 'forStackoverGnuplot.txt' using 1:($2==0?($3==4?$4:NaN):NaN) with lines ti '4'
plot [7:50][0:1] 'forStackoverGnuplot.txt' using 1:($2==0?($3==4?$4:"fe"):"fe") with lines ti '4'
Run Code Online (Sandbox Code Playgroud)
数据文件:
20 0 5 0.668593155
7 0 4 0.885223087
20 0 5 0.668593155
10 0 4 0.92239289
20 0 5 0.668593155
20 0 4 0.834947746
30 0 4 0.693726036
50 0 4 0.47169919
Run Code Online (Sandbox Code Playgroud)
但我得到:

这不是我预期的结果。我能做什么?我想让数据线交错。
我正在尝试为以下数据绘制直方图:
<text>,<percentage>
--------------------
"Statement A",50%
"Statement B",20%
"Statement C",30%
Run Code Online (Sandbox Code Playgroud)
我使用set datafile separator ","来获取相应的列。该图应在 X 轴上显示百分比,在 Y 轴上显示语句(完整字符串)。所以每个直方图都是水平的。
我怎样才能在 gnuplot 中做到这一点?或者是否有其他工具可以绘制好的矢量图像?
如何使用单个管道从 C 程序打开两个(或更多)Gnuplot 窗口?下面的代码似乎只是为第二个循环创建的数据创建图形。第一个循环创建的数据窗口要么没有创建,要么没有保持打开状态。我正在使用 AquaTerm 来显示 Gnuplot 图并且不想打开它的多个实例。我也喜欢使用,'-'这样我就不必创建要由 Gnuplot 读取的文本文件。
int main()
{
FILE *gnuplotPipe = popen("/usr/local/bin/gnuplot -persistent", "w");
fprintf(gnuplotPipe, "plot '-' with lines\n");
for (int i = 0; i < 11; i++) {
fprintf(gnuplotPipe, "%d\t%d\n", i, i);
}
fprintf(gnuplotPipe, "e\n");
fprintf(gnuplotPipe, "plot '-' with lines\n");
for (int i = 10; i < 21; i++) {
fprintf(gnuplotPipe, "%d\t%d\n", i, i);
}
fprintf(gnuplotPipe, "e\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我曾尝试-persist在绘图命令中使用,但未能使其正常工作。
为了清楚起见,我希望能够比较不同窗口中的图形,而不是同一个窗口中的图形。
我想随时间绘制堆积的直方图。结果证明这与Using gnuplot for Stacked histograms 不同。
这是数据:
05/11/2014 10:00:00 1 5 1
05/12/2014 22:00:00 3 5 1
05/13/2014 13:00:00 4 4 1
05/14/2014 09:00:00 3 4 1
05/15/2014 04:00:00 1 2 1
Run Code Online (Sandbox Code Playgroud)
前两列以空格分隔,其余列以制表符分隔。x 轴应该是日期和时间。
以下 gnuplot 脚本有问题:
set title "Test"
set key invert reverse Left outside
set key autotitle columnheader
set style data histogram
set style histogram rowstacked
set style fill solid border -1
set boxwidth 0.75
set datafile separator '\t'
set xdata time
set timefmt '%M/%D/%Y %H:%M:%S' …Run Code Online (Sandbox Code Playgroud) 我有一个包含 4 列(半径、x、y、z)的文件,其中每行都包含球体的坐标及其半径。你能帮我在 gnuplot 中绘制这些球体吗?(如果在 gnuplot 中不可能,你能推荐另一个绘图工具吗?)
一直在使用烛台处理真实的财务数据。除非我在数据中存在差距,否则它效果很好,其中有很多历史财务数据。
我已经“设置 boxwidth 1 relative”并且它工作正常,在大多数情况下它给了我一个合适的烛台“宽度”。但如果 2 点之间没有数据,烛台将变得更粗,即它向右延伸以填补该缺口。视觉效果很糟糕,右边的扩展真的很糟糕。
我试过使用 set boxwidth x absolute ,但我无法理解它的显示方式。我已经将范围缩小到set boxwidth 37500 absolute并且不知道为什么这个数字有效,即使它比 set boxwidth 1 有更严重的问题。
第一张图片是使用set boxwidth 37500 absolute. 日期从 01/31/13、02/01/13、02/03/13、02/04/13、02/05/13 开始。没有 02/02/13:

绝对值显示了 02/01 和 02/02 之间的适当差距,但由于我无法解释的原因,02/03 和 02/04 重叠。
第二张图片使用 set boxwidth 1 relative。这主要是我想要的方式。烛台相邻且大部分是正确的。但是 02/02/13 的差距在右边变胖了。在 02/09/13 也有一个缺口,它也会变胖,或者两边的 2 可能会延伸以填补我不知道的缺口。

我如何配置它以便所有烛台都具有相同的相邻宽度并且数据中的间隙为空?
我像疯了一样用谷歌搜索这个,没有人谈论它。我发现的几个烛台示例不使用“日期”而是整数,完全没有价值。烛台图表需要根据手册的日期。
在 Windows 7 上运行 Gnuplot 4.6 patchlevel 0。
谢谢
PS:我应该在这里添加数据。
basic.csv:
2013-01-15 00:00:00,93.879000,93.949000,92.874000,93.078000
2013-01-16 00:00:00,93.079000,93.672000,92.458000,92.800000
2013-01-17 00:00:00,92.799000,95.011000,92.629000,94.616000
2013-01-18 00:00:00,94.617000,94.872000,94.157000,94.662000
2013-01-20 17:00:00,94.649000,94.820000,93.965000,94.155000
2013-01-21 00:00:00,94.159000,94.938000,93.726000,94.009000
2013-01-22 00:00:00,94.011000,94.284000,93.147000,93.231000
2013-01-23 …Run Code Online (Sandbox Code Playgroud) 我不知道是什么导致了以下错误:
格式必须有 1-7 次 double 类型的转换。
我的输入文件格式正确。我使用以下命令:
使用 1:2“标题”绘制“input.txt”
全部在下图:

我之前有一个关于这个的问题。但是当我尝试在不同的数据文件结构中使用相同的解决方案时,该解决方案不起作用。这是我的数据文件:
CS 31.73 18.32 20.78 22.88 1.97 1.29 0.90 2.01
FL 43.27 29.45 15.64 6.55 1.64 1.27 2.18 0.00
HB 32.44 20.43 14.89 14.53 5.42 10.92 0.80 0.31
HD 28.53 7.27 29.53 20.33 9.18 0.93 2.04 1.44
MR 22.56 36.19 10.66 15.51 9.45 4.32 0.80 0.31
ZK 27.15 10.81 27.40 16.10 8.05 7.24 1.06 1.71
All 30.00 21.35 18.05 16.82 6.14 5.39 1.11 0.85
Run Code Online (Sandbox Code Playgroud)
我的 gnuplot:
set term pos eps font 20
set style data histogram
set style …Run Code Online (Sandbox Code Playgroud) 我一直在疯狂寻找这个问题的答案。如何在 gnuplot 上设置抽动之间的距离?目前,我情节中的抽搐被挤得太紧了。我希望它们更加分散。
下面是一个例子:
我有一个看起来像这样的图表:
100 ——
|
|
50 ——
|
|
0 ——
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
50 ——
|
|
|
|
|
0 ——
Run Code Online (Sandbox Code Playgroud)
请注意,后样本中实际上少了一个抽动。
有什么方法可以像在 Matlab 中的 subplot(n,m,x) 中那样在 gnuplot 的 multiplot 模式中选择一个子图,其中 x 是我想要绘制的那个?我首先在红色图形上使用线点绘制三个点,然后我想用黑色绘制一个点,而不是通过线连接到任何其他点。
gnuplot ×10
plot ×2
bar-chart ×1
c ×1
financial ×1
matplotlib ×1
pivot-table ×1
subplot ×1
ubuntu ×1