我的数据文件如下所示
ExpData.dat
### Units mg/g
### Col 1-4: Users 1-4
### Col 5-8: Standard 1
### Col 9-12: Standard 2
### Col 13-16: Standard 3
### Col 17-20: Standard 4
### Col 21-24: Standard 5
### Col 25-28: Standard 6
## User 1 User 2 User 3 User 4 User 1 User 2 User 3 User 4 User 1 User 2 User 3 User 4 User 1 User 2 User 3 User 4 User 1 User 2 User 3 User 4 User 1 User 2 User 3 User 4 User 1 User 2 User 3 User 4
User-1 User-2 User-3 User-4 10.07 9.92 9.79 9.68 19.78 19.90 19.38 19.22 39.43 38.35 37.55 37.75 48.95 47.81 46.56 46.23 56.11 56.32 55.04 55.44 67.98 69.39 67.98 67.64
User-1 User-2 User-3 User-4 10.08 9.91 9.82 9.63 19.79 19.92 19.34 19.22 39.45 38.37 37.57 37.70 48.90 47.79 46.58 46.27 56.13 56.35 55.18 55.51 68.02 69.45 67.78 67.60
User-1 User-2 User-3 User-4 10.02 9.92 9.76 9.64 19.75 19.91 19.33 19.25 39.41 38.41 37.58 37.68 48.92 47.81 46.63 46.24 56.13 56.41 55.27 55.63 68.00 69.38 67.86 67.68
User-1 User-2 User-3 User-4 10.04 9.92 9.86 9.64 19.79 19.93 19.33 19.21 39.45 38.35 37.57 37.61 48.92 47.78 46.68 46.26 56.13 56.34 55.02 55.57 68.04 69.42 67.68 67.83
User-1 User-2 User-3 User-4 10.01 9.89 9.76 9.69 19.74 19.94 19.30 19.20 39.47 38.34 37.53 37.78 48.97 47.81 46.74 46.22 56.18 56.37 55.10 55.46 68.12 69.41 67.76 67.44
User-1 User-2 User-3 User-4 10.06 9.88 9.79 9.71 19.79 19.94 19.35 19.20 39.49 38.41 37.58 37.72 48.90 47.81 46.64 46.29 56.14 56.35 54.98 55.50 68.12 69.38 68.03 67.72现在我希望有一个散点图与用户-1,用户-2,用户-3和用户-4作为x-抽象派。在绘制直方图时似乎相当容易,但我在绘制散点图时得到了一个小问题。只为用户-1和用户-2绘制数据的测试代码如下(用户-1和用户-2为x-tics)
##
##
reset session
##
set terminal postscript eps enhanced colour font 'Times-Roman,12' size 4in,3in
set output "ExpData.eps"
#
set xtics out scale 1.5
set ytics out scale 1.5
set tics font ", 14"
set xlabel "Users" font ",16"
set ylabel "mg U/g" font ",16"
set key inside top right title "Experimental Data" font ",14"
set yrange [0:75]
#
plot 'ExpData.dat' u 5:xtic(1) w points pt 10 ps 1.50 lt rgb "#0000FF" notitle, \
'' u 9:xticlabels(1) w points pt 10 ps 1.50 lt rgb "#006400" notitle, \
'' u 13:xticlabels(1) w points pt 10 ps 1.50 lt rgb "#9932CC" notitle, \
'' u 17:xticlabels(1) w points pt 10 ps 1.50 lt rgb "#9932CC" notitle, \
'' u 21:xticlabels(1) w points pt 10 ps 1.50 lt rgb "#FF0000" notitle, \
'' u 25:xticlabels(1) w points pt 10 ps 1.50 lt rgb "#FFD700" notitle, \
###
'' u 6:xtic(2) w points pt 8 ps 1.50 lt rgb "#0000FF" notitle, \
'' u 10:xticlabels(2) w points pt 8 ps 1.50 lt rgb "#006400" notitle, \
'' u 14:xticlabels(2) w points pt 8 ps 1.50 lt rgb "#9932CC" notitle, \
'' u 18:xticlabels(2) w points pt 8 ps 1.50 lt rgb "#9932CC" notitle, \
'' u 22:xticlabels(2) w points pt 8 ps 1.50 lt rgb "#FF0000" notitle, \
'' u 26:xticlabels(2) w points pt 8 ps 1.50 lt rgb "#FFD700" notitle, \
###代码以错误“无效命令”结尾。是否有人建议数据文件或代码有问题。
Revision of question after response of @theozh
我需要的是
i)。X轴上应该只有4个抽动点;用户-1,用户-2,用户-3和用户-4.
(二)。对于用户-1,应该有6套6点绘制在不同的y-范围(Col 5,9,13,17,21和25为用户-1)。对于每一列,pointtype已在代码中定义。例如,对于用户-1
plot 'ExpData.dat' u 5:xtic(1) w p pt 10 ps 1.50 lt rgb "#0000FF", \
'' u 9:xtic(1) w p pt 10 ps 1.50 lt rgb "#006400", \
'' u 13:xtic(1) w p pt 10 ps 1.50 lt rgb "#9932CC", \
'' u 17:xtic(1) w p pt 10 ps 1.50 lt rgb "#9932CC", \
'' u 21:xtic(1) w p pt 10 ps 1.50 lt rgb "#FF0000", \
'' u 25:xtic(1) w p pt 10 ps 1.50 lt rgb "#FFD700", \但是它导致了用户-1的6个抽搐,而不是一个抽搐。
(三)。完整的代码在下面给出,但它只给出了6个抽搐的用户-4。
##
##
reset session
##
set terminal postscript eps enhanced colour font 'Times-Roman,12' size 4in,3in
set output "ExpData.eps"
# FOR CUSTOM LINESTYLES
set style line 1 lt 2 lw 4 lc rgb "#0000FF"
set style line 2 lt 2 lw 4 lc rgb "#006400"
set style line 3 lt 2 lw 4 lc rgb "#9932CC"
set style line 4 lt 2 lw 4 lc rgb "#120A8F"
set style line 5 lt 2 lw 4 lc rgb "#FF0000"
set style line 6 lt 2 lw 4 lc rgb "#FFD700"
set style line 7 lt 2 lw 4 lc rgb "#8470FF"
set style line 8 lt 2 lw 4 lc rgb "#5D478B"
set style line 9 lt 2 lw 4 lc rgb "#9370DB"
set style line 10 lt 2 lw 4 lc rgb "black"
set key samplen 4 spacing 1.4 font ",14" width -2
#
set xtics out scale 1.5
set ytics out scale 1.5
set tics font ", 14"
set xlabel "Users" font ",16"
set ylabel "mg/g" font ",16"
set key inside bottom right spacing 1.35 font ",12" noautotitle
set key title "Experimental Data" font ",14"
set yrange [0:75]
#
plot 'ExpData.dat' u 5:xtic(1) w p pt 10 ps 1.50 lt rgb "#0000FF", \
'' u 9:xtic(1) w p pt 10 ps 1.50 lt rgb "#006400", \
'' u 13:xtic(1) w p pt 10 ps 1.50 lt rgb "#9932CC", \
'' u 17:xtic(1) w p pt 10 ps 1.50 lt rgb "#9932CC", \
'' u 21:xtic(1) w p pt 10 ps 1.50 lt rgb "#FF0000", \
'' u 25:xtic(1) w p pt 10 ps 1.50 lt rgb "#FFD700", \
'' u 6:xtic(2) w p pt 8 ps 1.50 lt rgb "#0000FF", \
'' u 10:xtic(2) w p pt 8 ps 1.50 lt rgb "#006400", \
'' u 14:xtic(2) w p pt 8 ps 1.50 lt rgb "#9932CC", \
'' u 18:xtic(2) w p pt 8 ps 1.50 lt rgb "#9932CC", \
'' u 22:xtic(2) w p pt 8 ps 1.50 lt rgb "#FF0000", \
'' u 26:xtic(2) w p pt 8 ps 1.50 lt rgb "#FFD700", \
'' u 7:xtic(3) w p pt 6 ps 1.50 lt rgb "#0000FF", \
'' u 11:xtic(3) w p pt 6 ps 1.50 lt rgb "#006400", \
'' u 15:xtic(3) w p pt 6 ps 1.50 lt rgb "#9932CC", \
'' u 19:xtic(3) w p pt 6 ps 1.50 lt rgb "#9932CC", \
'' u 23:xtic(3) w p pt 6 ps 1.50 lt rgb "#FF0000", \
'' u 27:xtic(3) w p pt 6 ps 1.50 lt rgb "#FFD700", \
'' u 8:xtic(4) w p pt 4 ps 1.50 lt rgb "#0000FF", \
'' u 12:xtic(4) w p pt 4 ps 1.50 lt rgb "#006400", \
'' u 16:xtic(4) w p pt 4 ps 1.50 lt rgb "#9932CC", \
'' u 20:xtic(4) w p pt 4 ps 1.50 lt rgb "#9932CC", \
'' u 24:xtic(4) w p pt 4 ps 1.50 lt rgb "#FF0000", \
'' u 28:xtic(4) w p pt 4 ps 1.50 lt rgb "#FFD700"
### End of code 发布于 2022-01-22 20:12:41
你的问题是:
'' u 25:xticlabels(1) w points pt 10 ps 1.50 lt rgb "#FFD700" notitle, \
###
'' u 6:xtic(2) w points pt 8 ps 1.50 lt rgb "#0000FF" notitle, \字符\继续第1行。如果以#开头第2行,这将是一个注释。如果您不以\结束这一行,那么第3行将是一个新命令,但是'' u 6:...是一个无效的命令,因为它不再“连接”到原始绘图命令。但是,即使在第2行的末尾添加了一个\,其余的行也将被解释为注释。检查help comments。
因此,删除###。它可能对视觉结构和格式很好,但在绘图命令中不起作用(只在最后)。
顺便说一句,您可以缩短一些命令,这使您的绘图命令更短、更清晰。
xticlabels() -> xtic()with points -> w pset key noautotile,而不是在每个子图命令中重复notitle。这就是消除错误的方法。但是你的阴谋中的其他东西似乎是错误的。也许您可以更详细地解释如何与用户一起使用xtic标签。
编辑:(在OP编辑问题之后)
您可以在绘图命令中使用循环,这可能会使您的生活变得更简单和更短。您可以循环用户和每个用户的小区数。您为切入点类型、颜色和数据列定义了一些函数。然后使用变量点类型pt var和变量linecolor lc rgb var。检查help variable。我试着用你的数据做这件事。虽然,我怀疑你想要应用相同的颜色0x9932cc两次,但这可以很容易改变。
代码:
### plot command does not allow for commented lines inbetween
reset session
$Data <<EOD
## User 1 User 2 User 3 User 4 User 1 User 2 User 3 User 4 User 1 User 2 User 3 User 4 User 1 User 2 User 3 User 4 User 1 User 2 User 3 User 4 User 1 User 2 User 3 User 4 User 1 User 2 User 3 User 4
User-1 User-2 User-3 User-4 10.07 9.92 9.79 9.68 19.78 19.90 19.38 19.22 39.43 38.35 37.55 37.75 48.95 47.81 46.56 46.23 56.11 56.32 55.04 55.44 67.98 69.39 67.98 67.64
User-1 User-2 User-3 User-4 10.08 9.91 9.82 9.63 19.79 19.92 19.34 19.22 39.45 38.37 37.57 37.70 48.90 47.79 46.58 46.27 56.13 56.35 55.18 55.51 68.02 69.45 67.78 67.60
User-1 User-2 User-3 User-4 10.02 9.92 9.76 9.64 19.75 19.91 19.33 19.25 39.41 38.41 37.58 37.68 48.92 47.81 46.63 46.24 56.13 56.41 55.27 55.63 68.00 69.38 67.86 67.68
User-1 User-2 User-3 User-4 10.04 9.92 9.86 9.64 19.79 19.93 19.33 19.21 39.45 38.35 37.57 37.61 48.92 47.78 46.68 46.26 56.13 56.34 55.02 55.57 68.04 69.42 67.68 67.83
User-1 User-2 User-3 User-4 10.01 9.89 9.76 9.69 19.74 19.94 19.30 19.20 39.47 38.34 37.53 37.78 48.97 47.81 46.74 46.22 56.18 56.37 55.10 55.46 68.12 69.41 67.76 67.44
User-1 User-2 User-3 User-4 10.06 9.88 9.79 9.71 19.79 19.94 19.35 19.20 39.49 38.41 37.58 37.72 48.90 47.81 46.64 46.29 56.14 56.35 54.98 55.50 68.12 69.38 68.03 67.72
EOD
set xtics out scale 1.5
set ytics out scale 1.5
set tics font ", 14"
set xlabel "Users" font ",16"
set ylabel "mg U/g" font ",16"
set key inside top right title "Experimental Data" font ",14" noautotitle
set yrange [0:75]
myPoints(n) = int(word("10 8 6 4",n)) # different pointtypes
myColor(n) = int(word("0x0000ff 0x006400 0x9932cc 0x9932cc 0xff0000 0xffd700",i))
myColumn(user,n) = column(user + n*4)
set xrange[0.5:4.5]
plot for [user=1:4] for [i=1:6] \
$Data u (user):(myColumn(user,i)):(myPoints(user)):(myColor(i)):xtic(user) \
w p pt var ps 1.50 lc rgb var
### end of code结果:

https://stackoverflow.com/questions/70816355
复制相似问题