读取文件和映射值

时间:2011-12-05 00:18:59

标签: c#

我在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

真的很感谢你的帮助!!

感谢。

1 个答案:

答案 0 :(得分:0)

我不确定您的CSV文件是如何映射到DemoInfo类的。此外,以下示例基于CSV文件,但您的示例数据显示TSV文件。如果它是TSV文件,只需用'/ t'替换','。另外,需要注意的是,如果任何字符串包含您的分隔符,例如像“Univeristy,Madison”这样的SWW机构字符串。

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

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]...
  }
}