Я пытаюсь создать приложение в .NetForms, где я читаю данные из файла, а затем использую эти данные для усечения диаграмC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Я пытаюсь создать приложение в .NetForms, где я читаю данные из файла, а затем использую эти данные для усечения диаграм

Сообщение Anonymous »

В настоящее время я читаю данные из файла CSV и показываю их в текстовом поле в одной форме. Затем я собираюсь передать эти данные в другую форму, где я смогу создать визуализацию в виде столбчатой ​​диаграммы, где этническая принадлежность — это значение X, а почасовая заработная плата — это значение Y. Я попытался включить поле со списком, в котором пользователь может выбрать год для фильтрации диаграммы.
ПРОБЛЕМА: Я НЕ МОГУ ПОЛУЧИТЬ БОЛЬШЕ ОДНОГО ПОЛОСКА НА Гистограмме, ДАЖЕ ВО ВРЕМЯ ОТЛАДКИ. В НАЛИЧИИ ВСЕ 10 ТОВАРОВ. НА ДИАГРАММЕ ПОКАЗЫВАЕТСЯ ПЕРВАЯ ЭТНИЧЕСКАЯ ПРИНАДЛЕЖНОСТЬ, «АЗИАТСКАЯ», ЗАТЕМ ЗАПЛАТА, ТАК КАК Я ХОЧУ, ЧТОБЫ ПОКАЗЫВАЛИ ВСЕ 10 ЭТНИЧЕСКИХ ПРИНАДЛЕЖНОСТЕЙ.
Я пробовал много способов создания и заполнения диаграммы, но у меня ничего не получилось. не повезло, ребята, можете ли вы дать какие-нибудь предложения, пожалуйста? (Я стараюсь сделать код максимально простым, он не обязательно должен быть самого высокого стандарта)
Это первая форма, в которой я читаю CSV и сохраняю данных, у меня также есть возможность отображать данные в текстовом поле.
namespace AS2_U17_5th
{
public partial class Form1 : Form
{
// Declaring datalist at the class level
public static List datalist = new List();

public Form1()
{
InitializeComponent();
ReadDataFromCSV();

}

private void button1_Click(object sender, EventArgs e)
{
// call the display data function
LoadDataIntoListBox();
}

// Removed the redundant declaration of datalist here
public void LoadDataIntoListBox()
{
try
{
foreach (DataItems d in datalist)
{
TBData.AppendText($"{d.Year} {d.Ethnicity} {d.HourlyWage}\r\n");

}
}
catch (Exception ex)
{
MessageBox.Show($"An error occurred while loading data into the ListBox {ex.Message}");
}
}

// Method to read data from CSV file
public static void ReadDataFromCSV()
{
try
{
using (StreamReader streamReader = new StreamReader("average-hourly-pay.csv"))
{
// Skip header line
streamReader.ReadLine();

// Looping over remaining lines
while (!streamReader.EndOfStream)
{
string line = streamReader.ReadLine();
string[] data = line.Split(',');

// Parsing data
int year;
if (!int.TryParse(data[0], out year))
{
// Log error and continue to next line
continue;
}

string ethnicity = data[1];

double hourlyWage;
if (!double.TryParse(data[2], out hourlyWage))
{
// Log error and continue to next line
continue;
}

// make a new object
DataItems item = new DataItems
{
Year = year,
Ethnicity = ethnicity,
HourlyWage = hourlyWage
};

// add to list
datalist.Add(item);

}
}
}
catch (Exception ex)
{
MessageBox.Show($"An error occurred while reading the CSV file: {ex.Message}");
}

}

// Ignore this code
private void LBLStatus_Click(object sender, EventArgs e)
{

}

private void BTNVisualise_Click(object sender, EventArgs e)
{
Visualiser CHART = new Visualiser(datalist);
CHART.Show();
this.Enabled = false;
}
}
}

Это еще одна страница, на которой я использую данные и пытаюсь создать диаграмму, используя поле со списком, чтобы пользователь мог фильтровать информацию по годам.using System.Data;
using System.Windows.Forms.DataVisualization.Charting;

namespace AS2_U17_5th
{
public partial class Visualiser : Form
{
private List datalist;
public Visualiser(List datalist)
{
InitializeComponent();
this.datalist = datalist;

// Puts the year in the combobox if anything breaks this should be n1
CBType.DataSource = datalist.Select(item => item.Year).Distinct().ToList();

// Setting the primary data type to take from the combobox
//CBType.SelectedIndex = 0;

// Creates the chart
LoadChartMethod();
}

public void LoadChartMethod()
{
CHRTVisualisation.Series.Clear();
CHRTVisualisation.Series.Add("HourlyWage");

//Get the seelected year from the Combobox
int selectedYear = (int)CBType.SelectedItem;

// Filter the datalist based on the selected year
List filteredData = datalist.Where(item => item.Year == selectedYear).ToList();

foreach (var item in filteredData)
{
// Add a data point to the chart
CHRTVisualisation.Series["HourlyWage"].Points.AddXY(item.Ethnicity, item.HourlyWage);
}

// Set the labels and the title for the chart
CHRTVisualisation.ChartAreas[0].AxisX.Interval = 1;
CHRTVisualisation.Titles.Clear();
CHRTVisualisation.Titles.Add($"Hourly Wages by Ethnicity - Year {selectedYear}");
CHRTVisualisation.ChartAreas[0].AxisX.Title = "Ethnicity";
CHRTVisualisation.ChartAreas[0].AxisY.Title = "Hourly Wage";

}

private void CBType_SelectedIndexChanged(object sender, EventArgs e)
{
LoadChartMethod();

}
}
}



Подробнее здесь: https://stackoverflow.com/questions/783 ... rom-a-file
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»