在Gnuplot中绘制新冠病毒-19数据

在Gnuplot中绘制新冠病毒-19数据,gnuplot,Gnuplot,我试图绘制(GNUPlot)CSV文件中包含的一些数据,该文件使用第一行作为时间数据,并在每列中对应案例计数。我想为每一个州(每一行)绘制一个单独的图,但运气不太好。有什么帮助吗?到目前为止,这就是我的情节脚本。我在脚本中使用[col=5:30:1]的plot…,因为前4列是州名称和地理位置。我想我现在应该专注于数据点,并最终找出如何在绘图上显示州名称。我已将美国数据从主要CSV数据中grep出来,以创建“us.dat”: 以及“us.dat”文件的一小部分: 但是,绘图图像不太正确: 一种可能

我试图绘制(GNUPlot)CSV文件中包含的一些数据,该文件使用第一行作为时间数据,并在每列中对应案例计数。我想为每一个州(每一行)绘制一个单独的图,但运气不太好。有什么帮助吗?到目前为止,这就是我的情节脚本。我在脚本中使用[col=5:30:1]的
plot…
,因为前4列是州名称和地理位置。我想我现在应该专注于数据点,并最终找出如何在绘图上显示州名称。我已将美国数据从主要CSV数据中grep出来,以创建“us.dat”:

以及“us.dat”文件的一小部分:

但是,绘图图像不太正确:


一种可能的解决方案是使用awk。 通过使用它,您可以转换文件并正常使用gnuplot(也要感谢这个令人惊讶的答案:) 您甚至可以在gnuplot内部进行内联操作

华盛顿可以按如下方式进行策划

set xdata time
set timefmt "%m/%d/%y"
pl "<awk -F, '{ for (i=5; i<=NF; i++)  { a[NR,i] = $i} } NF>p { p = NF } END { for(j=5; j<=p; j++) {str=a[1,j];for(i=2; i<=NR; i++){str=str\" \"a[i,j];}print str}}' us.dat" using 1:2 w l title "Washington"
设置扩展数据时间
设置时间表“%m/%d/%y”

pl“

这里是一个纯gnuplot版本

$data <<EOD
Province/State,Country/Region,Lat,Long,1/22/20,1/23/20,1/24/20,1/25/20,1/26/20,1/27/20,1/28/20,1/29/20,1/30/20,1/31/20,2/1/20,2/2/20,2/3/20,2/4/20,2/5/20,2/6/20,2/7/20,2/8/20,2/9/20,2/10/20,2/11/20,2/12/20,2/13/20,2/14/20,2/15/20,2/16/20,2/17/20,2/18/20,2/19/20,2/20/20,2/21/20,2/22/20,2/23/20,2/24/20,2/25/20,2/26/20,2/27/20,2/28/20,2/29/20,3/1/20,3/2/20,3/3/20,3/4/20,3/5/20,3/6/20,3/7/20,3/8/20,3/9/20,3/10/20,3/11/20
Washington,US,47.4009,-121.4905,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,267,366
New York,US,42.1657,-74.9481,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,220
California,US,36.1162,-119.6816,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,177
Massachusetts,US,42.2302,-71.5301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,95
EOD

N = 50
array X[N]
array Y[N]

set datafile separator ","

# a dummy plot to extract the row into an array
pl $data us ($0==0? sum[i=1:N](X[i]=strcol(i+4), 0) :\
             (strcol(1) eq "Washington")? sum[i=1:N](Y[i]=column(i+4)) : $0, $0) : 0

set xdata time
set timefmt "%m/%d/%y"

plot X us (X[$1]):(Y[$1]) w lp pt 7
$data
set xdata time
set timefmt "%m/%d/%y"
pl "<awk -F, '{ for (i=5; i<=NF; i++)  { a[NR,i] = $i} } NF>p { p = NF } END { for(j=5; j<=p; j++) {str=a[1,j];for(i=2; i<=NR; i++){str=str\" \"a[i,j];}print str}}' us.dat" using 1:2 w l title "Washington"
$data <<EOD
Province/State,Country/Region,Lat,Long,1/22/20,1/23/20,1/24/20,1/25/20,1/26/20,1/27/20,1/28/20,1/29/20,1/30/20,1/31/20,2/1/20,2/2/20,2/3/20,2/4/20,2/5/20,2/6/20,2/7/20,2/8/20,2/9/20,2/10/20,2/11/20,2/12/20,2/13/20,2/14/20,2/15/20,2/16/20,2/17/20,2/18/20,2/19/20,2/20/20,2/21/20,2/22/20,2/23/20,2/24/20,2/25/20,2/26/20,2/27/20,2/28/20,2/29/20,3/1/20,3/2/20,3/3/20,3/4/20,3/5/20,3/6/20,3/7/20,3/8/20,3/9/20,3/10/20,3/11/20
Washington,US,47.4009,-121.4905,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,267,366
New York,US,42.1657,-74.9481,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,220
California,US,36.1162,-119.6816,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,177
Massachusetts,US,42.2302,-71.5301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,95
EOD

N = 50
array X[N]
array Y[N]

set datafile separator ","

# a dummy plot to extract the row into an array
pl $data us ($0==0? sum[i=1:N](X[i]=strcol(i+4), 0) :\
             (strcol(1) eq "Washington")? sum[i=1:N](Y[i]=column(i+4)) : $0, $0) : 0

set xdata time
set timefmt "%m/%d/%y"

plot X us (X[$1]):(Y[$1]) w lp pt 7