首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xtic和xticlabels用于绘制x轴x轴的字符串。

xtic和xticlabels用于绘制x轴x轴的字符串。
EN

Stack Overflow用户
提问于 2022-01-22 19:25:24
回答 1查看 76关注 0票数 1

我的数据文件如下所示

代码语言:javascript
复制
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)

代码语言:javascript
复制
##
##
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

代码语言:javascript
复制
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。

代码语言:javascript
复制
##
##
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 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-22 20:12:41

你的问题是:

代码语言:javascript
复制
'' 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 p
  • set key noautotile,而不是在每个子图命令中重复notitle

这就是消除错误的方法。但是你的阴谋中的其他东西似乎是错误的。也许您可以更详细地解释如何与用户一起使用xtic标签。

编辑:(在OP编辑问题之后)

您可以在绘图命令中使用循环,这可能会使您的生活变得更简单和更短。您可以循环用户和每个用户的小区数。您为切入点类型、颜色和数据列定义了一些函数。然后使用变量点类型pt var和变量linecolor lc rgb var。检查help variable。我试着用你的数据做这件事。虽然,我怀疑你想要应用相同的颜色0x9932cc两次,但这可以很容易改变。

代码:

代码语言:javascript
复制
### 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

结果:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70816355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档