Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gnuplot 使用不同的列宽/线宽绘制热图_Gnuplot - Fatal编程技术网

Gnuplot 使用不同的列宽/线宽绘制热图

Gnuplot 使用不同的列宽/线宽绘制热图,gnuplot,Gnuplot,我在模拟一些东西,想找出两个参数的影响。因此,我对它们进行了更改,并查找每对参数值的结果,得到如下结果: 0 1000 2000 3000 4000 5000 .... 0 13.2 14.8 19.9 25.5 27.3 ... 1000 21.3 25.9 32.3 etc. 2000 etc. 3000 4000 .... 为了让它们可视化,我使用gnuplot创建了一个热图,效果非常好,显示了颜色和高度: reset set terminal qt

我在模拟一些东西,想找出两个参数的影响。因此,我对它们进行了更改,并查找每对参数值的结果,得到如下结果:

  0  1000  2000  3000  4000  5000  ....
0  13.2  14.8  19.9  25.5  27.3 ...
1000  21.3  25.9  32.3 etc.
2000  etc.
3000
4000
....
为了让它们可视化,我使用gnuplot创建了一个热图,效果非常好,显示了颜色和高度:

reset 

set terminal qt

set title "Test"
unset key
set tic scale 0

set palette rgbformula 7,5,15
set cbrange [0:100]
set cblabel "Transmission"

set pm3d at s interpolate 1,1

unset surf

set xlabel "U_{Lense} [V]"
set ylabel "E_{Start} [eV]"

set datafile separator "\t"
splot "UT500test.csv" matrix rowheaders columnheaders
现在,我想更详细地了解热图上的一些区域,并以100个不同的步骤改变参数,而不是如上表所示的1000个。但由于模拟需要相当长的时间,我只对某些区域进行了模拟,因此我的表如下所示:

0  1000  2000  2100  2200  2300  2400 ...  2900  3000  4000  ...
...

现在我想在热图上也展示一下。但每次我试着这么做,热图上的所有垃圾箱,不管1000或100个不同的垃圾箱的宽度是相同的。但我希望有100个差异的只有1000个差异宽度的1/10。有可能做到这一点吗?

您可以使用BoxyError的打印样式
来做一些事情。这是非常简单的,除了将x坐标放入阵列的方法,该阵列将在以后的绘图过程中使用。也许有更聪明的解决方案

代码:

### heatmap with irregular spacing
reset session
unset key 

$Data <<EOD
0.00    0.00    1000    2000    2100    2200    2300    2400    3000    4000
1000    0.75    0.75    0.43    0.34    0.61    0.74    0.66    0.97    0.58
1100    0.82    0.90    0.18    0.12    0.87    0.15    0.01    0.57    0.97
1200    0.10    0.15    0.68    0.73    0.55    0.07    0.98    0.89    0.01
1300    0.67    0.38    0.41    0.85    0.37    0.45    0.49    0.21    0.98
1400    0.76    0.53    0.68    0.09    0.22    0.40    0.59    0.33    0.08
2000    0.37    0.32    0.30    NaN     0.33    NaN     0.73    0.94    0.96
3000    0.07    0.61    0.37    0.54    0.32    0.28    0.62    0.51    0.48
4000    0.79    0.98    0.78    0.06    0.16    0.45    0.83    0.50    0.10
5000    0.49    0.95    0.29    0.59    0.55    0.88    0.29    0.47    0.93
EOD

stats $Data nooutput
BoxHalfWidth=50
# put first row into array
array ArrayX[STATS_columns]
set table $Dummy
    plot for [i=1:STATS_columns] $Data u (ArrayX[i]=column(i)) every ::0::0 with table
unset table

plot for [i=2:STATS_columns] $Data u (ArrayX[i]):1:(BoxHalfWidth):(BoxHalfWidth):i every ::1 with boxxyerror fs solid 1.0 palette
### end of code
### heatmap with irregular spacing with filled area
reset session
unset key 

$Data <<EOD
0.00    0.00    1000    2000    2100    2200    2300    2400    3000    4000
1000    0.75    0.75    0.43    0.34    0.61    0.74    0.66    0.97    0.58
1100    0.82    0.90    0.18    0.12    0.87    0.15    0.01    0.57    0.97
1200    0.10    0.15    0.68    0.73    0.55    0.07    0.98    0.89    0.01
1300    0.67    0.38    0.41    0.85    0.37    0.45    0.49    0.21    0.98
1400    0.76    0.53    0.68    0.09    0.22    0.40    0.59    0.33    0.08
2000    0.37    0.32    0.30    NaN     0.33    NaN     0.73    0.94    0.96
3000    0.07    0.61    0.37    0.54    0.32    0.28    0.62    0.51    0.48
4000    0.79    0.98    0.78    0.06    0.16    0.45    0.83    0.50    0.10
5000    0.49    0.95    0.29    0.59    0.55    0.88    0.29    0.47    0.93
EOD

stats $Data nooutput
ColCount = STATS_columns-1
RowCount = STATS_records-1
# put first row and column into arrays
array ArrX[ColCount]
array ArrY[RowCount]
set table $Dummy
    plot for [i=1:ColCount] $Data u (ArrX[i]=column(i+1)) every ::0::0 with table
    plot $Data u (ArrY[$0+1]=$1) every ::1 with table
unset table

dx(i) = (ArrX[i]-ArrX[i-1])*0.5
dy(i) = (ArrY[i]-ArrY[i-1])*0.5
ndx(i,j) = ArrX[i] - (i-1<1        ? dx(i+1) : dx(i))
pdx(i,j) = ArrX[i] + (i+1>ColCount ? dx(i)   : dx(i+1))
ndy(i,j) = ArrY[j] - (j-1<1        ? dy(j+1) : dy(j))
pdy(i,j) = ArrY[j] + (j+1>RowCount ? dy(j)   : dy(j+1))

set xrange[ndx(1,1):pdx(ColCount,1)]
set yrange[ndy(1,1):pdy(1,RowCount)]
set tic out
plot for [i=2:STATS_columns] $Data u (ArrX[i-1]):1:(ndx(i-1,$0)):(pdx(i-1,$0)): \
    (ndy(i-1,$0+1)):(pdy(i-1,$0+1)):i every ::1 with boxxyerror fs solid 1.0 palette
### end of code
### heatmap with irregular spacing with filled area
# compatible with gnuplot 5.0
reset session
unset key 

$Data <<EOD
0.00    0.00    1000    2000    2100    2200    2300    2400    3000    4000
1000    0.75    0.75    0.43    0.34    0.61    0.74    0.66    0.97    0.58
1100    0.82    0.90    0.18    0.12    0.87    0.15    0.01    0.57    0.97
1200    0.10    0.15    0.68    0.73    0.55    0.07    0.98    0.89    0.01
1300    0.67    0.38    0.41    0.85    0.37    0.45    0.49    0.21    0.98
1400    0.76    0.53    0.68    0.09    0.22    0.40    0.59    0.33    0.08
2000    0.37    0.32    0.30    NaN     0.33    NaN     0.73    0.94    0.96
3000    0.07    0.61    0.37    0.54    0.32    0.28    0.62    0.51    0.48
4000    0.79    0.98    0.78    0.06    0.16    0.45    0.83    0.50    0.10
5000    0.49    0.95    0.29    0.59    0.55    0.88    0.29    0.47    0.93
EOD

stats $Data nooutput
ColCount = int(STATS_columns-1)
RowCount = int(STATS_records-1)
# put first row and column into arrays

CoordsX = ""
set table $Dummy
    set xrange[0:1]     # to avoid warnings
    do for [i=2:ColCount+1] {
        plot $Data u (Value=column(i)) every ::0::0 with table
        CoordsX = CoordsX.sprintf("%g",Value)." "
    }
unset table
CoordsY = ""
set table $Dummy
    do for [i=1:RowCount] {
        plot $Data u (Value=$1) every ::i::i with table
        CoordsY= CoordsY.sprintf("%g",Value)." "
    }
unset table

dx(i) = (word(CoordsX,i)-word(CoordsX,i-1))*0.5
dy(i) = (word(CoordsY,i)-word(CoordsY,i-1))*0.5
ndx(i,j) = word(CoordsX,i) - (i-1<1        ? dx(i+1) : dx(i))
pdx(i,j) = word(CoordsX,i) + (i+1>ColCount ? dx(i)   : dx(i+1))
ndy(i,j) = word(CoordsY,j) - (j-1<1        ? dy(j+1) : dy(j))
pdy(i,j) = word(CoordsY,j) + (j+1>RowCount ? dy(j)   : dy(j+1))

set xrange[ndx(1,1):pdx(ColCount,1)]
set yrange[ndy(1,1):pdy(1,RowCount)]
set tic out
plot for [i=2:ColCount+1] $Data u (real(word(CoordsX,i-1))):1:(ndx(i-1,int($0))):(pdx(i-1,int($0))): \
    (ndy(i-1,int($0+1))):(pdy(i-1,int($0+1))):i every ::1 with boxxyerror fs solid 1.0 palette
### end of code
结果:

### heatmap with irregular spacing
reset session
unset key 

$Data <<EOD
0.00    0.00    1000    2000    2100    2200    2300    2400    3000    4000
1000    0.75    0.75    0.43    0.34    0.61    0.74    0.66    0.97    0.58
1100    0.82    0.90    0.18    0.12    0.87    0.15    0.01    0.57    0.97
1200    0.10    0.15    0.68    0.73    0.55    0.07    0.98    0.89    0.01
1300    0.67    0.38    0.41    0.85    0.37    0.45    0.49    0.21    0.98
1400    0.76    0.53    0.68    0.09    0.22    0.40    0.59    0.33    0.08
2000    0.37    0.32    0.30    NaN     0.33    NaN     0.73    0.94    0.96
3000    0.07    0.61    0.37    0.54    0.32    0.28    0.62    0.51    0.48
4000    0.79    0.98    0.78    0.06    0.16    0.45    0.83    0.50    0.10
5000    0.49    0.95    0.29    0.59    0.55    0.88    0.29    0.47    0.93
EOD

stats $Data nooutput
BoxHalfWidth=50
# put first row into array
array ArrayX[STATS_columns]
set table $Dummy
    plot for [i=1:STATS_columns] $Data u (ArrayX[i]=column(i)) every ::0::0 with table
unset table

plot for [i=2:STATS_columns] $Data u (ArrayX[i]):1:(BoxHalfWidth):(BoxHalfWidth):i every ::1 with boxxyerror fs solid 1.0 palette
### end of code
### heatmap with irregular spacing with filled area
reset session
unset key 

$Data <<EOD
0.00    0.00    1000    2000    2100    2200    2300    2400    3000    4000
1000    0.75    0.75    0.43    0.34    0.61    0.74    0.66    0.97    0.58
1100    0.82    0.90    0.18    0.12    0.87    0.15    0.01    0.57    0.97
1200    0.10    0.15    0.68    0.73    0.55    0.07    0.98    0.89    0.01
1300    0.67    0.38    0.41    0.85    0.37    0.45    0.49    0.21    0.98
1400    0.76    0.53    0.68    0.09    0.22    0.40    0.59    0.33    0.08
2000    0.37    0.32    0.30    NaN     0.33    NaN     0.73    0.94    0.96
3000    0.07    0.61    0.37    0.54    0.32    0.28    0.62    0.51    0.48
4000    0.79    0.98    0.78    0.06    0.16    0.45    0.83    0.50    0.10
5000    0.49    0.95    0.29    0.59    0.55    0.88    0.29    0.47    0.93
EOD

stats $Data nooutput
ColCount = STATS_columns-1
RowCount = STATS_records-1
# put first row and column into arrays
array ArrX[ColCount]
array ArrY[RowCount]
set table $Dummy
    plot for [i=1:ColCount] $Data u (ArrX[i]=column(i+1)) every ::0::0 with table
    plot $Data u (ArrY[$0+1]=$1) every ::1 with table
unset table

dx(i) = (ArrX[i]-ArrX[i-1])*0.5
dy(i) = (ArrY[i]-ArrY[i-1])*0.5
ndx(i,j) = ArrX[i] - (i-1<1        ? dx(i+1) : dx(i))
pdx(i,j) = ArrX[i] + (i+1>ColCount ? dx(i)   : dx(i+1))
ndy(i,j) = ArrY[j] - (j-1<1        ? dy(j+1) : dy(j))
pdy(i,j) = ArrY[j] + (j+1>RowCount ? dy(j)   : dy(j+1))

set xrange[ndx(1,1):pdx(ColCount,1)]
set yrange[ndy(1,1):pdy(1,RowCount)]
set tic out
plot for [i=2:STATS_columns] $Data u (ArrX[i-1]):1:(ndx(i-1,$0)):(pdx(i-1,$0)): \
    (ndy(i-1,$0+1)):(pdy(i-1,$0+1)):i every ::1 with boxxyerror fs solid 1.0 palette
### end of code
### heatmap with irregular spacing with filled area
# compatible with gnuplot 5.0
reset session
unset key 

$Data <<EOD
0.00    0.00    1000    2000    2100    2200    2300    2400    3000    4000
1000    0.75    0.75    0.43    0.34    0.61    0.74    0.66    0.97    0.58
1100    0.82    0.90    0.18    0.12    0.87    0.15    0.01    0.57    0.97
1200    0.10    0.15    0.68    0.73    0.55    0.07    0.98    0.89    0.01
1300    0.67    0.38    0.41    0.85    0.37    0.45    0.49    0.21    0.98
1400    0.76    0.53    0.68    0.09    0.22    0.40    0.59    0.33    0.08
2000    0.37    0.32    0.30    NaN     0.33    NaN     0.73    0.94    0.96
3000    0.07    0.61    0.37    0.54    0.32    0.28    0.62    0.51    0.48
4000    0.79    0.98    0.78    0.06    0.16    0.45    0.83    0.50    0.10
5000    0.49    0.95    0.29    0.59    0.55    0.88    0.29    0.47    0.93
EOD

stats $Data nooutput
ColCount = int(STATS_columns-1)
RowCount = int(STATS_records-1)
# put first row and column into arrays

CoordsX = ""
set table $Dummy
    set xrange[0:1]     # to avoid warnings
    do for [i=2:ColCount+1] {
        plot $Data u (Value=column(i)) every ::0::0 with table
        CoordsX = CoordsX.sprintf("%g",Value)." "
    }
unset table
CoordsY = ""
set table $Dummy
    do for [i=1:RowCount] {
        plot $Data u (Value=$1) every ::i::i with table
        CoordsY= CoordsY.sprintf("%g",Value)." "
    }
unset table

dx(i) = (word(CoordsX,i)-word(CoordsX,i-1))*0.5
dy(i) = (word(CoordsY,i)-word(CoordsY,i-1))*0.5
ndx(i,j) = word(CoordsX,i) - (i-1<1        ? dx(i+1) : dx(i))
pdx(i,j) = word(CoordsX,i) + (i+1>ColCount ? dx(i)   : dx(i+1))
ndy(i,j) = word(CoordsY,j) - (j-1<1        ? dy(j+1) : dy(j))
pdy(i,j) = word(CoordsY,j) + (j+1>RowCount ? dy(j)   : dy(j+1))

set xrange[ndx(1,1):pdx(ColCount,1)]
set yrange[ndy(1,1):pdy(1,RowCount)]
set tic out
plot for [i=2:ColCount+1] $Data u (real(word(CoordsX,i-1))):1:(ndx(i-1,int($0))):(pdx(i-1,int($0))): \
    (ndy(i-1,int($0+1))):(pdy(i-1,int($0+1))):i every ::1 with boxxyerror fs solid 1.0 palette
### end of code

Edit2: 为了好玩,这里是gnuplot 5.0的“复古版”:

gnuplot5.0不支持阵列。尽管gnuplot5.0支持数据块,但显然像
$Datablock[1]
这样的索引不起作用。因此,解决方法是将矩阵X,Y坐标放入字符串
CoordsX
CoordsY
中,并使用
word()
获得坐标。如果string和
word()
没有其他限制,那么下面的代码将与gnuplot5.0一起使用,并给出与上面相同的结果

代码:

### heatmap with irregular spacing
reset session
unset key 

$Data <<EOD
0.00    0.00    1000    2000    2100    2200    2300    2400    3000    4000
1000    0.75    0.75    0.43    0.34    0.61    0.74    0.66    0.97    0.58
1100    0.82    0.90    0.18    0.12    0.87    0.15    0.01    0.57    0.97
1200    0.10    0.15    0.68    0.73    0.55    0.07    0.98    0.89    0.01
1300    0.67    0.38    0.41    0.85    0.37    0.45    0.49    0.21    0.98
1400    0.76    0.53    0.68    0.09    0.22    0.40    0.59    0.33    0.08
2000    0.37    0.32    0.30    NaN     0.33    NaN     0.73    0.94    0.96
3000    0.07    0.61    0.37    0.54    0.32    0.28    0.62    0.51    0.48
4000    0.79    0.98    0.78    0.06    0.16    0.45    0.83    0.50    0.10
5000    0.49    0.95    0.29    0.59    0.55    0.88    0.29    0.47    0.93
EOD

stats $Data nooutput
BoxHalfWidth=50
# put first row into array
array ArrayX[STATS_columns]
set table $Dummy
    plot for [i=1:STATS_columns] $Data u (ArrayX[i]=column(i)) every ::0::0 with table
unset table

plot for [i=2:STATS_columns] $Data u (ArrayX[i]):1:(BoxHalfWidth):(BoxHalfWidth):i every ::1 with boxxyerror fs solid 1.0 palette
### end of code
### heatmap with irregular spacing with filled area
reset session
unset key 

$Data <<EOD
0.00    0.00    1000    2000    2100    2200    2300    2400    3000    4000
1000    0.75    0.75    0.43    0.34    0.61    0.74    0.66    0.97    0.58
1100    0.82    0.90    0.18    0.12    0.87    0.15    0.01    0.57    0.97
1200    0.10    0.15    0.68    0.73    0.55    0.07    0.98    0.89    0.01
1300    0.67    0.38    0.41    0.85    0.37    0.45    0.49    0.21    0.98
1400    0.76    0.53    0.68    0.09    0.22    0.40    0.59    0.33    0.08
2000    0.37    0.32    0.30    NaN     0.33    NaN     0.73    0.94    0.96
3000    0.07    0.61    0.37    0.54    0.32    0.28    0.62    0.51    0.48
4000    0.79    0.98    0.78    0.06    0.16    0.45    0.83    0.50    0.10
5000    0.49    0.95    0.29    0.59    0.55    0.88    0.29    0.47    0.93
EOD

stats $Data nooutput
ColCount = STATS_columns-1
RowCount = STATS_records-1
# put first row and column into arrays
array ArrX[ColCount]
array ArrY[RowCount]
set table $Dummy
    plot for [i=1:ColCount] $Data u (ArrX[i]=column(i+1)) every ::0::0 with table
    plot $Data u (ArrY[$0+1]=$1) every ::1 with table
unset table

dx(i) = (ArrX[i]-ArrX[i-1])*0.5
dy(i) = (ArrY[i]-ArrY[i-1])*0.5
ndx(i,j) = ArrX[i] - (i-1<1        ? dx(i+1) : dx(i))
pdx(i,j) = ArrX[i] + (i+1>ColCount ? dx(i)   : dx(i+1))
ndy(i,j) = ArrY[j] - (j-1<1        ? dy(j+1) : dy(j))
pdy(i,j) = ArrY[j] + (j+1>RowCount ? dy(j)   : dy(j+1))

set xrange[ndx(1,1):pdx(ColCount,1)]
set yrange[ndy(1,1):pdy(1,RowCount)]
set tic out
plot for [i=2:STATS_columns] $Data u (ArrX[i-1]):1:(ndx(i-1,$0)):(pdx(i-1,$0)): \
    (ndy(i-1,$0+1)):(pdy(i-1,$0+1)):i every ::1 with boxxyerror fs solid 1.0 palette
### end of code
### heatmap with irregular spacing with filled area
# compatible with gnuplot 5.0
reset session
unset key 

$Data <<EOD
0.00    0.00    1000    2000    2100    2200    2300    2400    3000    4000
1000    0.75    0.75    0.43    0.34    0.61    0.74    0.66    0.97    0.58
1100    0.82    0.90    0.18    0.12    0.87    0.15    0.01    0.57    0.97
1200    0.10    0.15    0.68    0.73    0.55    0.07    0.98    0.89    0.01
1300    0.67    0.38    0.41    0.85    0.37    0.45    0.49    0.21    0.98
1400    0.76    0.53    0.68    0.09    0.22    0.40    0.59    0.33    0.08
2000    0.37    0.32    0.30    NaN     0.33    NaN     0.73    0.94    0.96
3000    0.07    0.61    0.37    0.54    0.32    0.28    0.62    0.51    0.48
4000    0.79    0.98    0.78    0.06    0.16    0.45    0.83    0.50    0.10
5000    0.49    0.95    0.29    0.59    0.55    0.88    0.29    0.47    0.93
EOD

stats $Data nooutput
ColCount = int(STATS_columns-1)
RowCount = int(STATS_records-1)
# put first row and column into arrays

CoordsX = ""
set table $Dummy
    set xrange[0:1]     # to avoid warnings
    do for [i=2:ColCount+1] {
        plot $Data u (Value=column(i)) every ::0::0 with table
        CoordsX = CoordsX.sprintf("%g",Value)." "
    }
unset table
CoordsY = ""
set table $Dummy
    do for [i=1:RowCount] {
        plot $Data u (Value=$1) every ::i::i with table
        CoordsY= CoordsY.sprintf("%g",Value)." "
    }
unset table

dx(i) = (word(CoordsX,i)-word(CoordsX,i-1))*0.5
dy(i) = (word(CoordsY,i)-word(CoordsY,i-1))*0.5
ndx(i,j) = word(CoordsX,i) - (i-1<1        ? dx(i+1) : dx(i))
pdx(i,j) = word(CoordsX,i) + (i+1>ColCount ? dx(i)   : dx(i+1))
ndy(i,j) = word(CoordsY,j) - (j-1<1        ? dy(j+1) : dy(j))
pdy(i,j) = word(CoordsY,j) + (j+1>RowCount ? dy(j)   : dy(j+1))

set xrange[ndx(1,1):pdx(ColCount,1)]
set yrange[ndy(1,1):pdy(1,RowCount)]
set tic out
plot for [i=2:ColCount+1] $Data u (real(word(CoordsX,i-1))):1:(ndx(i-1,int($0))):(pdx(i-1,int($0))): \
    (ndy(i-1,int($0+1))):(pdy(i-1,int($0+1))):i every ::1 with boxxyerror fs solid 1.0 palette
### end of code
####具有填充区域的不规则间距热图
#与gnuplot 5.0兼容
重置会话
取消设置键

$Data不需要使用
stats
的额外步骤。 可以直接作为非均匀矩阵访问真实坐标:

  set offset 100,100,100,100
  plot $Data matrix nonuniform using 1:2:3 with points pt 5 lc palette

缺少的部分是填充整个区域,而不是绘制单个点。可以使用pm3d执行此操作:

  set pm3d corners2color mean
  set view map
  splot $Data matrix nonuniform with pm3d

颜色与上一个绘图不匹配,因为pm3d在指定颜色时会考虑每个框的所有4个角。我告诉它取平均值(这是默认值),但许多其他变量都是可能的。您可以使用
set pm3d interpolate 3,3

覆盖整个区域的好而短的解决方案进一步平滑着色。但是,我缺少数据点
(22002000)
。如果它不是一个严格的矩阵,也就是说,行上的列数不是恒定的,那么它也能工作吗?这正是我试图做的。使用此解决方案,颜色矩形不是以我的参数对(例如1000和2000)为中心,而是以1500和2500左右为中心,我最初认为这是个问题。但是如果我正确理解了corners2color的用法,它实际上通过减少统计错误来改善我的可视化效果,所以我对此很满意,谢谢!这真是太令人印象深刻了,我就是不喜欢。。当我试着运行您上面输入的精确代码时,它给了我一个错误:array ArrX[ColCount]^“heat.g”,第51行:无效命令您知道它为什么不工作吗?我只是查找了一下,似乎数组数据类型在Gnuplot 5.2中可用,但我的版本是5.0有什么原因不能更新到5.2.6吗?5.0可能有一个变通办法来模拟阵列,但代码会更长一些。在我的工作场所,我无法访问软件版本,因此我必须使用5.0版本。我在我的个人电脑上试用了5.2.6版,在我的工作空间上也试用了你的5.0版解决方案。两个都做得很好,完全符合我的想法。非常感谢。