这让我疯狂。我正在基于%值基于数据库中标记的计数显示标记云。我注意到,当一个标签被retrived,相关的字体大小是巨大的(因为100%的检索),所以有些人建议我这样做:标签云字体大小计算逻辑
var tagSummaryNegative = from af in db.AgileFactors
join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
join s in db.Stories on psf.StoryID equals s.StoryID
join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
join pro in db.Projects on it.ProjectID equals pro.ProjectID
where pro.ProjectID == pro_id &&
pro.ProjectID == it.ProjectID &&
it.ProjectIterationID == pim.ProjectIterationID &&
pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 &&
s.StoryID == psf.StoryID &&
psf.AgileFactorID == af.AgileFactorID
group af by af.Name into tagGroup
select new
{
Tag = tagGroup.Key,
tagCount = tagGroup.Count()
};
int maxTagFrequencyNegative = (from t in tagSummaryNegative select (int?)t.tagCount).Max() ?? 0;
var tagCloudNegative = from af in db.AgileFactors
join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
join s in db.Stories on psf.StoryID equals s.StoryID
join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
join pro in db.Projects on it.ProjectID equals pro.ProjectID
where pro.ProjectID == pro_id &&
pro.ProjectID == it.ProjectID &&
it.ProjectIterationID == pim.ProjectIterationID &&
pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 &&
s.StoryID == psf.StoryID &&
psf.AgileFactorID == af.AgileFactorID
group af by af.Name into tagGroup
select new
{
Tag = tagGroup.Key,
**weight = (tagGroup.Count() == 1) ? (double)1 : ((double)tagGroup.Count()/maxTagFrequencyNegative * 100)**
};
现在,当计数为1,字体很小,但是当2,它又回到了巨大的水平。计数较小的标签相对于具有最大计数的标签变小 - 但我需要它从小尺寸开始并保持增长。请帮忙!
public string GetTagSize(double weight)
{
if (weight >= 99)
return "36pt";
else if (weight >= 80)
return "29pt";
else if (weight >= 64)
return "23pt";
else if (weight >= 48)
return "18pt";
else if (weight >= 32)
return "14pt";
else if (weight >= 10)
return "11pt";
else
return "8pt";
}
'maxTagFrequencyNegative'的值是什么?为什么你会用一个负值来分割? – Justin 2011-02-25 18:16:11
这不是一个负值 - 我使用的是LINQ ... maxTagFrequencyNegative只是带有相关负面故事的标签的别名... – user618616 2011-02-25 18:18:12
+1对于推荐对人们很好,它只会鼓励一个良好的社区,如果您奖励回答你喜欢/用过 – 2011-02-25 18:23:34