- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 MS ASP.NET 图表控件有疑问。
正如您在下面的屏幕截图中看到的,我有一个线系列显示在一个未延伸到图表 y 轴的条形系列之上。
代码如下:
var data1 = new Dictionary<string, float>
{
{ "W1", 80},
{ "W2", 60},
{ "W3", 40},
{ "W4", 20},
{ "W5", 10}
};
var data2 = new Dictionary<string, float>
{
{ "W1", 10},
{ "W2", 10},
{ "W3", 0},
{ "W4", 10},
{ "W5", 10}
};
var data3 = new Dictionary<string, float>
{
{ "W1", 10},
{ "W2", 30},
{ "W3", 50},
{ "W4", 70},
{ "W5", 80}
};
var data4 = new Dictionary<string, float>
{
{ "W1", 50},
{ "W2", 50},
{ "W3", 50},
{ "W4", 50},
{ "W5", 50}
};
var chart = new Chart();
chart.Height = Unit.Pixel(300);
chart.Width = Unit.Pixel(450);
chart.Legends.Add("Legend").Alignment = StringAlignment.Center;
chart.Palette = ChartColorPalette.None;
chart.PaletteCustomColors = new Color[] { Color.FromArgb(191, 214, 151), Color.FromArgb(249, 255, 149), Color.FromArgb(191, 79, 75), Color.Green };
var area = new ChartArea();
area.AxisX.MajorGrid.LineColor = Color.Transparent;
chart.ChartAreas.Add(area);
var series1 = new Series("Done");
foreach (var item in data1)
{
series1.Points.AddXY(item.Key, item.Value);
}
series1.MarkerBorderWidth = 1;
var series2 = new Series("In Progress");
foreach (var item in data2)
{
series2.Points.AddXY(item.Key, item.Value);
}
var series3 = new Series("Needs Review");
foreach (var item in data3)
{
series3.Points.AddXY(item.Key, item.Value);
}
var series4 = new Series("Goal");
foreach (var item in data4)
{
series4.Points.AddXY(item.Key, item.Value);
}
series4.ChartType = SeriesChartType.Line;
series4.BorderWidth = 2;
series1.ChartType = series2.ChartType = series3.ChartType = SeriesChartType.StackedColumn;
series1.Font = series2.Font = series3.Font = series4.Font = new Font("Verdana", 8.25f, FontStyle.Regular);
chart.Series.Add(series1);
chart.Series.Add(series2);
chart.Series.Add(series3);
chart.Series.Add(series4);
感谢您的帮助。
更新:
在我继续寻找合适的解决方案时,我为“目标”线系列实现了一个额外的图表,目的是:
此方法通过在条形系列上显示“目标”线系列并允许“目标”线系列延伸到 y 轴来提供正确的呈现。但它禁用了现有图表上条形图系列的工具提示和点击操作。由于这种不完善的用户体验,这种方法不是合适的解决方案。
继续寻找解决方案......
最佳答案
对于问题 1:
另一种方法是使用 PostPaint 事件,您可以在图表上的任何位置绘制任何您想要的东西……但是您仍然会失去工具提示和该行的此类交互功能。
对于你的问题2:
您可以从图例项集合中排除不需要的图例条目;您可以像完成此示例一样自定义图例:
yourChart.CustomizeLegend += new EventHandler<CustomizeLegendEventArgs> (CustomizeLegendEventHandler);
//...
static void CustomizeLegendEventHandler(object sender, CustomizeLegendEventArgs e)
{
int anotherIndex = 3;
if (sender != null && sender is Chart)
{
if (e != null && e.LegendItems != null && e.LegendItems.Count > 0)
{
Chart ch = ((Chart)sender);
if (...) //your logic here
{
//example: you can move a legend item from one index to another here:
LegendItem item = e.LegendItems[0];
e.LegendItems.RemoveAt(0);
e.LegendItems.Insert(anotherIndex, item);
}
}
}
}
并且,您可以使用仅包含一个标签、一个点等的辅助 Y 轴,或者:您可以使用 PostPaint 事件处理程序来绘制任何您想要的东西。
您可以从 MS 下载一个很棒的可安装示例包:here .它们显示了许多您可以学习的代码示例。我从这些样本和使用这个新的免费反射器中发现了这些东西:ILSpy .
希望这对您有所帮助。
关于c# - MS 图表控件 : Drawing and Labeling Line Series Across the Chart Area,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714321/
背景 给定nested data , 我想使用 across 应用一个简单的函数在任意选择的列上。使用 across 我想遍历传递给函数的一个参数的列的选择,并保持第二个参数不变。 例子 # Usin
嘿,我正在尝试通过使用新版本的 dplyr 添加“Last_”来重命名某些列,但我一直收到此错误 Error: `across()` must only be used inside dplyr ve
在不同的 Windows 操作系统和运行不同语言(键盘、编码等)的 Windows 版本上,虚拟键码是否始终相同? 因此,通过查看 MSDN,我可以看到 VK_RETURN = 0x0D。 Retur
我们正在尝试清理我们的数据。我们已经收集了数据集,几乎所有的东西都可以工作,除了最后一点代码。它说它找不到跨过的功能。 代码如下: cleandata % pivot_longer(3:173,
dat % mutate(Comp1Letter = factor(Comp1Letter, levels = GradeLevels)) %>% mutate(Comp2Le
我想在多个列上执行多个操作,我可以使用 dplyr::across() 这样做: library(tidyverse) df = tibble(x=1:5, p1=x*2, p2=x*4, p3=x*
我试图将几列中为 NA 的变量值设置为不同但名称相似的列中的值。我想知道这是否可以使用 dplyr。 例如,假设我有以下数据框: x % mutate(across(c(x_var1, x_var
我想计算多列的加权移动平均值,每列使用相同的权重。加权移动平均值应按组计算(与 using `dplyr::across` with functions with more than one argu
我有两组变量,例如变量 a和变量 a_avail .我正在尝试更改 a 的值基于 a_avail 的值我想知道这是否可以使用 across 来完成与 glue . 这是我尝试过的。没有产生错误,但胶水
我有两种类型的按钮扩展 JButton,并且我需要一个按钮来访问另一个按钮的 get 方法。但因为 isPressed() 方法不是按钮的一部分,我无法调用它。 澄清:我有一种按钮。当我按下该按钮时,
我需要保护父级页面免受子级页面的影响 我尝试过不在 mmap 中使用带有 MAP_ANONYMOUS 标志且 fd = -1 的 shm_open。 我尝试过使用 fchmod 保护底层内存。 我目前
我有一个 Bootstrap 下拉菜单,我想将其放在 div 的右侧,如下所示: (虚线是下一个 div 的边缘。) 当我打开列表时,它会填充到宽度然后换行到下一行: 是否有可能使列表的边缘“越过”边
基本上,当用户在对话框中按下注销时,我想返回到我的登录 View 。 onSelected: (value) async { switch (value) {
df a = c("aa", "bb", "cc", "bb", "bb", "cc","bb", "bb", "cc", "cc", "bb", "cc", "bb", "bb", "cc","bb
我想在 http firebase 函数中缓存最近的记录(比如最近 24 小时)。在 http firebase 函数(比如 fetchLastXRecords)中,如果没有找到,我会在缓存中查找记录
df_input是输入文件,理想的输出文件是df_output。 df_input % dplyr::group_by_at(.vars = vars(id)) %>% {left_join(
我可以很容易地做到这一点 df.groupBy().sum() 但我不确定 groupBy()不会增加额外的性能影响,或者只是糟糕的风格。我已经看到它完成了 df.agg( ("col1", "sum
希望是一个简单的问题。我想使用 dplyr mutate across,并引用另一个静态列以用于所有 mutate 函数。 df % mutate(fc = mutate(across(starts_
我是 R 初学者,我正在尝试清理 Excel 电子表格中的数据。我读过 dplyr::across()所以我试图在 mutate 中使用它管道。 我需要将一些被错误导入的列转换为 character
考虑到两列,是否存在对值不唯一的约束,例如 - id | secondid +---------------+ 3 | 4 4 | 5 id | sec
我是一名优秀的程序员,十分优秀!