标签: dynamic-data-display

动态数据显示 - WPF - 需要向画布添加文本 - C#

我正在使用动态数据显示WPF图表.我要求在图表上绘制的曲线上的每个点旁边显示一个标签.

确切的功能如下:

  1. 每条曲线都有一个保存其数据的对象和一个包含颜色,标记形状等的描述.它还告诉我标签是否必须对该特定曲线可见.

  2. 还有一个选项可以使用复选框隐藏/显示图表上所有曲线上所有点的标签.

  3. 还有第三种选择,用户可以左键单击标记并在其旁边看到标签.

现在,我之前通过为每个点添加标签和ElementMarkerPointGraph以及设置标签的可见性来实现它.我知道这种方法可以带来巨大的性能损失.

我现在正在寻找创建一个解决方案,我可以将文本直接渲染到我提供的位置的画布上.我还需要帮助从画布中删除文本.

有没有办法在画布上原生添加文本?最有效的方法是什么?

编辑:我需要在绘图仪放大时移动文本.我已经知道当绘图仪缩放时,我需要能够将文本移动到适当的位置.

c# wpf xaml dynamic-data-display

7
推荐指数
2
解决办法
2万
查看次数

DynamicDataDisplay ChartPlotter 删除所有绘图

在我的 WPF 应用程序中,我有一个 D3 ChartPlotter,可以在其中绘制 4 个折线图。这是 XAML 代码:

<d3:ChartPlotter Name="plotter">
    <d3:ChartPlotter.HorizontalAxis>
        <d3:HorizontalAxis Name="timeAxis" />
    </d3:ChartPlotter.HorizontalAxis>
    <d3:ChartPlotter.VerticalAxis>
        <d3:VerticalAxis Name="accelerationAxis" />
    </d3:ChartPlotter.VerticalAxis>
</d3:ChartPlotter>
Run Code Online (Sandbox Code Playgroud)

其中d3是 DinamicDataDisplay 的命名空间,这是后面的代码(相关部分)。

var x = new List<int>();
var y = new List<int>();
for (var t = 0; t <= 10; t = t + 1) { 
    x.Add(t);
    y.Add(Math.Pow(t,2));
}

var xCoord = new EnumerableDataSource<int>(x);
xCoord.SetXMapping(t => t);
var yCoord = new EnumerableDataSource<int>(y);
yCoord.SetYMapping(k => k);

CompositeDataSource plotterPoints = new CompositeDataSource(xCoord, yCoord);

plotter.AddLineGraph(plotterPoints, Brushes.Red.Color , 2, …
Run Code Online (Sandbox Code Playgroud)

c# wpf charts dynamic-data-display

5
推荐指数
1
解决办法
5556
查看次数

在WPF中更新动态数据显示图表的有效方法

我目前正在创建一个项目,它将从我的COM端口获取实时数据,然后显示它以便于解释.其中一部分是使用动态数据显示创建折线图,我希望它也能实现.

我目前有一个工作设置,它将来自集合的数据汇总在一起,并以可读的格式输出给绘图仪,虽然这对我的静态样本数据来说很好,但我担心考虑到数据会更新很多,这远远没有优化(有时每秒多次).始终发送数据已更改的通知会使图表刷新,但始终提取所有数据并创建新的图源似乎远非有效.我在我的视图模型中使用以下代码:

private CompositeDataSource _AccelXData;
public CompositeDataSource AccelXData
{
    get
    {
        var xData = new EnumerableDataSource<int>(dataItems.Select(v => v.id));
        xData.SetXMapping(x => x);
        var yData = new EnumerableDataSource<double>(dataItems.Select(v => v.accelX));
        yData.SetYMapping(y => y);
        _AccelXData = xData.Join(yData);
        return _AccelXData;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有多个运行的,每个代表一个图形(例如x,y和z轴上的加速度).他们必须遵循示例图表:

<d3:ChartPlotter Name="plotter" DockPanel.Dock="Top" Margin="5">
    <d3:LineGraph DataSource="{Binding AccelXData}" />
    <d3:LineGraph DataSource="{Binding AccelYData}" />
    <d3:LineGraph DataSource="{Binding AccelZData}" />
</d3:ChartPlotter>
Run Code Online (Sandbox Code Playgroud)

关于这个我想知道的两件事:是否有可能编写一个函数来处理所有数据输出,我不必一遍又一遍地复制相同的代码?更重要的是,一旦我的Collection更新而不是一遍又一遍地重新收集所有数据,那么简单地将值添加到我的折线图中的最佳方法是什么?

c# wpf mvvm dynamic-data-display

5
推荐指数
0
解决办法
2648
查看次数

动态数据显示图表:更改Y轴范围

有没有人知道是否有办法改变D3线图上的Y轴限制?

我正在使用Codeplex源代码中的最新版本... WPF版本,而不是Silverlight版本.

我正在绘制来自Android传感器的读数,并且范围值会发生很大变化.有时它大约为零,图表看起来像这样:

范围从-0.05到+0.05

然后值的大小发生变化,Y轴重新调整以显示整个数据,图形现在如下所示:

范围从-0.8到+ 0.6

查看Y值如何从图1更改为2.

我想要的是使Y轴具有我选择的固定值,比如-10到+10.然后图表将始终以相同的比例绘制.

有没有办法做到这一点?

图的XAML代码是这样的:

    <d3:ChartPlotter
        Name="gyroGraph"
        Margin="21,5,10,0"
        Grid.ColumnSpan="2"
        Background="White"
        Grid.Row="1"
        LegendVisibility="Collapsed"
        NewLegendVisible="False"
        MainHorizontalAxisVisibility="Collapsed"
        MainVerticalAxisVisibility="Collapsed">
        <d3:VerticalAxis
            FontSize="8" />
        <d3:Header
            Content="Angular Velocity"
            FontSize="11" />
    </d3:ChartPlotter>
Run Code Online (Sandbox Code Playgroud)

谢谢和最好的问候,罗德里戈巴斯尼亚克

c# wpf charts dynamic-data-display

4
推荐指数
1
解决办法
1万
查看次数

枚举尚未启动或已完成

我正在处理一个应用程序一切正常,但我得到例外

枚举尚未启动或已完成.

这是我生成此异常的代码.

 for (int i = 0; i < SelectedItems.Count; i++)
                {
                    lineDS = new DataSet();
                    datDs = new DataSet();
                    datDs = DatelineData(SelectedItems[i].ToString(), Starttime, Endtime, NUDTextBox, txtSensorLess, dtpStartDate, dtpEndDate);
                    lineDS =GraphlineDraw(SelectedItems[i].ToString(),Starttime,Endtime,NUDTextBox,txtSensorLess,dtpStartDate,dtpEndDate);
                    if (datDs.Tables[0].Rows.Count > 0 & lineDS.Tables[0].Rows.Count > 0)
                    {
                        var dates = (from dr in datDs.Tables[0].AsEnumerable()
                                     select new
                                     {
                                         date = dr.Field<DateTime>("DateRecorded"),
                                     }.date).ToList();

                        var Rate = (from dr in lineDS.Tables[0].AsEnumerable()
                                    select new
                                    {
                                        rate = dr.Field<double>(SelectedItems[i])
                                    }.rate).ToList();
                        var datesDataSource = new EnumerableDataSource<DateTime>(dates);
                        datesDataSource.SetXMapping(x => dateAxis.ConvertToDouble(x));
                        var RateDataSource = …
Run Code Online (Sandbox Code Playgroud)

c# wpf dynamic-data-display

3
推荐指数
1
解决办法
7492
查看次数

在Rect对象上创建WPF工具提示

我正在使用一个开源图表库,在图表上创建标记.(动态数据显示)我正在创建的标记是使用Rect对象创建的.我注意到System.Windows.Shapes中的所有Shapes都有一个ToolTip属性,但System.Windows.Rect没有.我希望弹出一个工具提示,告诉用户当鼠标悬停在标记上时标记的价格值.当鼠标进入rect占据的区域时,我正在考虑创建并弹出一个工具提示,但我不知道有多少可能考虑到矩形将被图表缩放/平移.还有其他建议吗?

这是我正在创建的标记的代码(来自Felice Pollano博客)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Shapes;
using System.Windows.Controls;
using System.Text;
using System.Windows;
using System.Windows.Media;

namespace Microsoft.Research.DynamicDataDisplay.PointMarkers
{
public class CandleStickPointMarker:ShapePointMarker,ITransformAware
{
    public double CandlestickWidth
    {
        get { return (double)GetValue(CandlestickWidthProperty); }
        set { SetValue(CandlestickWidthProperty, value); }
    }
    public static readonly DependencyProperty CandlestickWidthProperty =
        DependencyProperty.Register("CandlestickWidth", typeof(double), typeof(CandleStickPointMarker), new UIPropertyMetadata(4.0));
    public double CandlestickStrokeWidth
    {
        get { return (double)GetValue(CandlestickStrokeWidthProperty); }
        set { SetValue(CandlestickStrokeWidthProperty, value); }
    }

    public static readonly DependencyProperty CandlestickStrokeWidthProperty =
        DependencyProperty.Register("CandlestickStrokeWidth", typeof(double), typeof(CandleStickPointMarker), new UIPropertyMetadata(1.0));
    public Brush …
Run Code Online (Sandbox Code Playgroud)

c# wpf tooltip rect dynamic-data-display

3
推荐指数
1
解决办法
3637
查看次数

如何创建自定义路由事件?WPF c#

我遵循了本教程,但我无法将我学到的知识应用到我的项目中.

我有一个LineGraph对象(动态数据显示),我想创建一个在LineGraph的厚度等于0时引发的事件.

我应该如何按照本教程编写它?

c# wpf dynamic-data-display

3
推荐指数
2
解决办法
8785
查看次数

使用Jstl显示动态数据库表

我试图使用JSTL显示数据库数据,如下所示:

我的道

public ArrayList getStudentFirstName(){
        ArrayList v = new ArrayList();
        Connection conn;
        try{
         conn =  db.getDbConnection();
         String sql = "select STU_FIRST_NAME, STU_MIDDLE_NAME, LAST_NAME from college_students_master";
         PreparedStatement ps = conn.prepareStatement(sql);
         ResultSet rs = ps.executeQuery();
         while(rs.next()){
             String firstname = rs.getString("STU_FIRST_NAME");
             String middlename = rs.getString("STU_MIDDLE_NAME");
             String lastname = rs.getString("LAST_NAME");
             v.add(firstname);
             v.add(middlename);
             v.add(lastname);
         }
        }catch(Exception asd){
            System.out.println(asd.getMessage());
        }
        return v;
    }
Run Code Online (Sandbox Code Playgroud)

我的servlet:

public class displayservlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
      DetailsDao dd = new DetailsDao(); …
Run Code Online (Sandbox Code Playgroud)

java servlets dynamic-data-display

3
推荐指数
1
解决办法
3万
查看次数

WPF D3动态数据显示多轴

我有一个动态数据显示图表.我正在使用ChartPlotter.它有一个默认的X和Y轴.我需要添加一个额外的X轴和两个Y轴.如何在XAML中实现此功能并在代码中动态实现?

开发人员可以使用这些图表通过提供轴编号的枚举(例如,Y1,Y2,Y3等)或X1,X2将数据附加到这些轴中的任何一个.目前我想拥有上述数量有限的轴.

有人可以帮我解决这个问题吗?我知道要添加注入绘图仪但是我必须添加多个注入绘图仪吗?如果轴数确实增加,我还需要添加多少?感觉有点低效,因此将轴添加到单个ChartPlotter的问题.

c# wpf dynamic-data-display

1
推荐指数
1
解决办法
2593
查看次数

InteractiveDataDisplay.WPF 制作动态图表作为值记录器外观

我使用 Microsoft InteractiveDataDisplay.WPF(以前的 DynamicDataDisplay)来可视化实时数据(大约 2-3 秒)。此代码 xaml.cs:

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            double[] y = new double[200];
            double[] x = new double[200];
            for (int i = 0; i < 200; i++)
            {
                y[i] = 3.1415 * i / (y.Length - 1);
                x[i] = DateTime.Now.AddMinutes(-i).ToOADate();
            }
            linegraph.Plot(x, y);
        }
    }
Run Code Online (Sandbox Code Playgroud)

使用这个 xaml:

<d3:Chart Name="plotter">
            <d3:Chart.Title>
                <TextBlock HorizontalAlignment="Center" FontSize="18" Margin="0,5,0,5">chart sample</TextBlock>                
            </d3:Chart.Title>
            <d3:LineGraph x:Name="linegraph" Description="Simple linegraph" Stroke="Blue" StrokeThickness="3">
            </d3:LineGraph>
        </d3:Chart>
Run Code Online (Sandbox Code Playgroud)

给出这个观点: 样本图表 但我想要以下自定义图表: 在此处输入图片说明

任何想法如何做到这一点?谢谢!

更新 1(使用 …

c# wpf customization wpf-controls dynamic-data-display

0
推荐指数
1
解决办法
3483
查看次数