找回密码
 立即注册

QQ登录

只需一步,快速开始

silentdab

论坛元老

3

主题

18

帖子

4051

积分

论坛元老

积分
4051

活字格认证

最新发帖
silentdab
论坛元老   /  发表于:2013-10-11 14:28  /   查看:11718  /  回复:13
现在默认都是等差的,请问如何设置成等比的刻度显示?

13 个回复

正序浏览
iceman
社区贡献组   /  发表于:2013-10-12 17:34:00
14#
回复 13楼silentdab的帖子

真棒,感谢你反馈问题结果。
回复 使用道具 举报
silentdab
论坛元老   /  发表于:2013-10-12 17:02:00
13#
基本的需求已经实现了,谢谢您的帮助。
回复 使用道具 举报
silentdab
论坛元老   /  发表于:2013-10-12 16:47:00
12#
回复 11楼iceman的帖子

您好非常感谢您的回复,之前逻辑上输了出了问题,还有文档是英文的实在不好查看,我用土办法解决了
c1obj.View.AxisY.ItemsSource = new List<KeyValuePair<object, double>>
                {
                  new KeyValuePair<object, double>("5",Math.Log(5,2)),
                  new KeyValuePair<object, double>("10",Math.Log(10,2)),
                  new KeyValuePair<object, double>("20",Math.Log(20,2)),
                  new KeyValuePair<object, double>("40",Math.Log(40,2)),
                  new KeyValuePair<object, double>("80",Math.Log(80,2)),
                  new KeyValuePair<object, double>("160",Math.Log(160,2)),
                  new KeyValuePair<object, double>("320",Math.Log(320,2)),
                  new KeyValuePair<object, double>("500",Math.Log(500,2))
                };
我在y 轴做了假标注 ,也将X轴的实际数值按照对数转换了下,现在是等比显示的效果图如下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-10-12 14:30:00
11#
回复 9楼silentdab的帖子

silentdab 你好,
请问9#设置的坐标轴是 LogBase 形式吗?9# 中的效果只有在 Y 坐标为 LogBase 时才能实现。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-10-12 11:34:00
10#
回复 7楼silentdab的帖子

silentdab 你好,

不好意思,我没能重现你的问题。
附件是我按照 Demo 中的例子抽取出来的,可以正常转换,请查看。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
silentdab
论坛元老   /  发表于:2013-10-12 11:25:00
9#
回复 8楼iceman的帖子

您好可能是我描述得不对我想要的效果如下图


我想让Y 轴的 刻度 20 100 200 500 的间距相等,也就是想让小数据拉长,大数据缩小的效果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-10-12 11:18:00
8#
回复 6楼silentdab的帖子

从 double[] x = new double[npts]; 来看,这是声明double 型数组的长度。
回复 使用道具 举报
silentdab
论坛元老   /  发表于:2013-10-12 09:34:00
7#
void base_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
      ComboBox cb = (ComboBox)sender;
      Axis ax = cb.Tag as Axis;
      if (ax != null)
      {
        switch (cb.SelectedIndex)
        {
          case 0:
            ax.LogBase = double.NaN;
            break;
          case 1:
            ax.LogBase = Math.E;
            break;
          case 2:
            ax.LogBase = 10;
            break;

        }

        UpdateTemplate(ax);
      }
    }


只设置 logbase 就可以吗?为什么我设置了之后数据显示不出来了

我现在是这样设置数据 c1bar1.ValuesSource = noiseList;
现在是否需要c1obj.Data.Children.Add 单个添加?
回复 使用道具 举报
silentdab
论坛元老   /  发表于:2013-10-12 09:07:00
6#
回复 3楼iceman的帖子

您好示例中有个方法
public static XYDataSeries CreateDataSeries(double xmin, double xmax, int npts, Func<double, double> func, string label)
    {
      double[] x = new double[npts];
      double[] y = new double[npts];

      for (int i = 0; i < npts; i++)
      {
        x = xmin + (xmax - xmin) * i / (npts - 1);
        y = func(x);
      }

      return new XYDataSeries() { ValuesSource = y, XValuesSource = x, Label = label };
    }

这个方法的 第三个参数int npts是什么意思?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部