读取文件并映射值

本文关键字:映射 文件 读取 | 更新日期: 2023-09-27 18:16:34

我找到了一个用c#实现的并行坐标应用程序。我想要实现的是,我希望能够读取CSV文件并将值和标签映射到坐标上。映射值的方法是手动分配值。相反,我希望从CSV文件中读取这些值。

下面是当前的方法:

public void DataBind()
        {
            IList<DemoInfo> infos = new List<DemoInfo>();
            for (int i = 0; i < ObjectsCount; i++)
            {
                var x = new DemoInfo();
                x.X = m_Random.NextDouble() * 400 - 100;
                x.Y = m_Random.NextDouble() * 500 - 100;
                x.Z = m_Random.NextDouble() * 600 - 300;
                x.V = m_Random.NextDouble() * 800 - 100;
                x.K = 1.0;
                //x.M = i % 2 == 0 ? 1.0 : -20.0;
                x.M = i;
                x.Tag = i + 1;
                infos.Add(x);
            } 

var dataSource = new MultiDimensionalDataSource<DemoInfo>(infos, 6);
            dataSource.MapDimension(0, info => info.X);
            dataSource.MapDimension(1, info => info.Y);
            dataSource.MapDimension(2, info => info.Z);
            dataSource.MapDimension(3, info => info.V);
            dataSource.MapDimension(4, info => info.K);
            dataSource.MapDimension(5, info => info.M);
            //dataSource.MapDimensionToOpacity(0, 0.5);
            dataSource.MapTag(info => info.Tag);
            dataSource.Labels[0] = "X";
            dataSource.Labels[1] = "Y";
            dataSource.Labels[2] = "Z";
            dataSource.Labels[3] = "V";
            dataSource.Labels[4] = "K";
            dataSource.Labels[5] = "M";
            dataSource.HelperAxisLabel = "Helper axis";
            DataSource = dataSource;
        }

以下是CSV文件中的一些数据:

SWW Institutions        Undergradutes       Postgraduates
University College      2085            250 
Metropolitan University 4715            1135

非常感谢您的帮助!

谢谢。

读取文件并映射值

我不确定您的CSV文件如何映射到DemoInfo类。同样,下面的示例基于CSV文件,但是您的示例数据显示的是TSV文件。如果是TSV文件,只需将','替换为'/t'。另外,需要注意的是是否有字符串包含分隔符,例如SWW Institutions字符串,如" university, Madison"。

您可以打开文件来读取文本行,并根据您的分隔符分隔行。

using (var sr = File.OpenText(path))
{
  var line = string.Empty;
  while ((line = sr.ReadLine()) != null)
  {
    var dataPoints = line.Split(',');
    // Create Your Data Mappings Here
    // dataPoints[0]...
  }
}