У меня есть полярная диаграмма, которую я создал с помощью управления диаграммой в своем приложении WinForms. Тип оси X — расстояние, тип оси Y — азимут.
Моя проблема в том, что я не могу установить начальные точки X, Y, т.е. (0,0) в центре, они всегда появляются в другом месте. Как показано на рисунке 1
Как вы видите на приведенных выше рисунках, значение азимута равно нулю при 270 и 360 при 90, а расстояние равно 0 при 180 и 100 при 0. Вот код, который я использовал для создания полярной диаграммы.
public PolarChart()
{
this.WindowState = FormWindowState.Maximized;
InitializeComponent();
Series s0 = new Series("PolarChart");
s0.Color = Color.Gray;
s0.ChartType = SeriesChartType.Polar;
s0.Points.AddXY(0, 0);
chart1.Series.Add(s0);
chart1.Series[0]["PolarDrawingStyle"] = "line";
chart1.ChartAreas[0].AxisX.Minimum = 0;
chart1.ChartAreas[0].AxisX.Maximum = 360;
chart1.ChartAreas[0].AxisX.Interval = 30;
chart1.ChartAreas[0].AxisY.Minimum = 0;
chart1.ChartAreas[0].AxisY.Maximum = 100;
chart1.ChartAreas[0].AxisY.Interval = 10;
}
private void btnDisplay_Click(object sender, EventArgs e)
{
TextFieldParser reader = new TextFieldParser("LFPoints.txt");
reader.Delimiters = new string[] { "," };
reader.HasFieldsEnclosedInQuotes = true;
string[] read = reader.ReadFields();
try
{
Series S2 = new Series("Plot");
S2.ChartType = SeriesChartType.Polar;
S2.BorderColor = Color.Red;
if (read != null)
if (read.Length != 0)
{
foreach (string other in read)
{
ComputeDistanceAngle(other, Base);
S2.Points.AddXY(Azimuth, Distance);
}
chart1.Series.Add(S2);
chart1.Series["LFPlot"]["PolarDrawingStyle"] = "marker";
}
else
{
MessageBox.Show("No Graph to Plot");
}
else
MessageBox.Show("No Graph to Plot");
}
catch (Exception)
{
}
}
private void chart1_MouseMove(object sender, MouseEventArgs e)
{
var pos = e.Location;
if (prevPosition.HasValue && pos == prevPosition.Value)
return;
tooltip.RemoveAll();
prevPosition = pos;
var results = chart1.HitTest(pos.X, pos.Y, false,
ChartElementType.PlottingArea);
foreach (var result in results)
{
if (result.ChartElementType == ChartElementType.PlottingArea)
{
var xVal = result.ChartArea.AxisX.PixelPositionToValue(pos.X);
var yVal = result.ChartArea.AxisY.PixelPositionToValue(pos.Y);
tooltip.Show("Azimuth = " + xVal + "\n"+" Distance = " + yVal, this.chart1,
pos.X, pos.Y - 15);
}
}
}
После того, как я много перепробовал, я узнал о свойстве «Перекресток».
chart1.ChartAreas[0].AxisX.Crossing = 90;
chart1.ChartAreas[0].AxisY.Crossing = 0;
Но я не получил то, что мне нужно. Поэтому, пожалуйста, помогите мне нанести точки на полярной диаграмме с точками X и Y, начиная с центра. Вот ссылка, которая именно так мне нужна моя полярная диаграмма. введите здесь описание ссылки
Я использую Visual Studio 2010.