如何调整数据可视化的轴刻度。调整图表大小后的图表?

时间:2014-09-15 18:06:44

标签: c# image charts scale data-visualization

我将图表从72dpi更新为300dpi。这是因为我使用itextsharp将图像添加到我的pdf中,质量很差。所以我将图像的大小增加了3倍,图像确实看起来更好,但这就是问题所在。

DPI已经增加,但细节已经变得非常难以察觉。

原始图表图像

Original Image

重构图表图片 enter image description here

代码

这就是我调整图表大小的方法。

private static System.Drawing.Bitmap GetChartBitmap()
        {


            System.Drawing.Rectangle targetBounds = new System.Drawing.Rectangle(0, 0, chart_runs.Width, chart_runs.Height);
            System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(targetBounds.Width, targetBounds.Height);
            bitmap.SetResolution(1000, 1000);
            chart_runs.DrawToBitmap(bitmap, targetBounds);
            bitmap.Save(@"C:\Temp\OriginalChartImage.bmp");


            System.Drawing.Bitmap bitmap3 = new System.Drawing.Bitmap(1650, 990);
            bitmap3.SetResolution(300, 300);
            chart_runs.DrawToBitmap(bitmap3, new System.Drawing.Rectangle(0, 0, 1650, 990));
            bitmap3.Save(@"C:\Temp\RefactoredChartImage.png");



            //This stuff below is for my code elsewhere. Using bitmap3 to be added to pdf. 
            //chart_runs.DrawToBitmap(bitmap, targetBounds);
            string path = System.IO.Path.GetTempPath();

            bitmap1.Save(path + @"\Image.png");
            return bitmap1;
        }

我查看了Microsoft msdn示例,但没有找到解决我问题的任何内容。也就是说,我怎样才能增加标签的大小,以便人们可以再次阅读它们。或者,有没有办法让我增加DPI并保持第一张图片中使用的相同标签x和标签y比例?也就是说,有一个更大的图像和300DPI,但20到20的比例为0到300,而不像我重构的图片那样5?

尝试修复

  • 缩放轴?见here。我不认为这是正常的。这里没有多大成功。
  • 一直试图在Chart类中找到一种方法来查看是否有指定严格标度的方法。 (y刻度为20,x刻度为15秒)。
  • 大多数在线资源都很高兴只是为了增加图片的规模并走开。这样的事情here.

我非常感谢任何帮助和帮助。

1 个答案:

答案 0 :(得分:1)

结合不同的问题,有几个不同的答案。最简单的方法是将轴标签的字体大小更改为更大。这可以通过

完成
chart1.ChartAreas[0].AxisX.LabelStyle.Font = new Font...;

如果不这样做,无论你做什么,你的标签都不会被读取,而这仅仅是因为你改变了DPI(这正是改变DPI所做的)。

如果希望标签在y轴上每20个单位显示,而在x上每15个显示一次,则可以使用轴的IntervalIntervalType属性。当您显示IntervalType个对象时使用DateTime

chart1.ChartAreas[0].AxisX.Interval = 15;
chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Seconds;
chart1.ChartAreas[0].AxisY.Interval = 20;

关于缩放轴的第一个链接实际上是放大或缩小,这就是为什么你没有成功。