定性数据功能强大,但给设计师带来了挑战,以使其可视化并以吸引人且易于解释的形式呈现。为此,我们使用图表和图形。
数据可视化可以用不同的形式表示,例如折线图、条形图、饼图、散点图或地图。设计图表时,您应该专注于您的目标,并仔细考虑如何以最具视觉吸引力、可扫描且永不误导的方式传达信息。

x 轴和 y 轴构成任何 2D 图表的基础,其中x 轴是构成坐标平面的水平线。
通常,x 轴用于表示时间。

y 轴是一条垂直线,到达天空(sky)。很容易记住,对吧?
确保始终从零开始 y 轴。否则,您会通过显示比实际收益更高的数据来误导用户。
通常,使用 y 轴表示数量。

图例 的作用是描述一个图表,在图表上显示与特定数据相关的名称和颜色。
比较多个数据集时,您只需要一个图例。

网格线是将图表区域划分为多个部分的垂直水平线或垂直线。如果您曾经玩过战舰,那么您就会知道网格有助于发现对手的船只。图表也是如此——网格有助于定位坐标平面上的任何点并更容易阅读图表。

气泡图很容易识别 ,因为它们看起来像一堆肥皂泡。图表中的每个气泡代表一个数据点,该数据点由三个维度定义,使用 x 轴和 y 轴上的位置以及气泡的大小。有时,气泡的颜色或其在动画中的运动可以代表更多的维度。
气泡图可能会让人不知所措,因此当您的数据没有至少 3 个维度时,请避免使用它们。例如,您可以比较每个学生在过去一个学期和每年的学习成绩和出勤率。
始终在图例中包含不同气泡大小的含义。

雷达图,又名蜘蛛图或网络图,不是用来编织阴谋的。我们使用它们来概述多个变量的一组或多组值。例如,雷达图可以帮助比较组中不同人的不同健康指标或可视化团队中每个人的绩效数据。
一方面,雷达图是比较多个变量的不错选择。另一方面,如果您使用太多或太独特的变量或在一个雷达图中有多个填充颜色的多边形,它们可能难以解释。

烛台图在金融市场中很常见,每个“烛台”代表给定时间范围内的价格走势。蜡烛的主体显示开盘价和收盘价之间的波动。实心蜡烛表示价格上涨,而空心蜡烛表示价格下跌。

饼图 每一片都包含丰富的信息。 切片越大,特定类别级别在整体中所占的比例就越大。
什么是好的饼图?
• 添加注释
如果某些类别切片的大小相似,则很难估计确切的值,因此包含注释对用户非常有帮助。
• 限制饼图的数量
当饼图超过 5 个时,图表变得难以阅读。此外,设计师很难找到足够明显的对比色。您可以限制类别的数量,也可以将具有最小值的类别折叠到单个“其他”切片中。
• 设置切片的顺序
当您以合乎逻辑的方式放置切片时,图表变得更易于扫描。您可以将它们设置为从最大到最小的大小或遵循它们的自然顺序。例如,说明人口群体失业率的图表将包括 18-24 岁、25-34 岁、35-44 岁等。
• 避免 3D 效果
不建议为任何图表类型添加 3D 效果,因为它会扭曲比例并使用户对实际类别大小感到困惑。
如果您想将类别相互比较,而不是将每个类别与一个整体进行比较,请考虑使用饼图以外的其他类型。

环形图 是饼图的变体。这是一个简单易读的图表,其中每个环形块代表一种数据类型的数量。
选择饼图或环形图取决于您的审美。唯一的区别是饼图没有可用于添加注释或其他信息移除的中心圆。

柱状图是最受欢迎的图表之一,它表示水平或垂直条的组合,其中高度或长度定义了所代表的整体值。
根据研究,柱状图也是最容易让用户理解的。
设计柱状图的最佳实践是什么?
• 始终从零值基线开始。它简化了阅读,并且不会以不明确的数据误导观众。
• 不要使设计过于复杂,并将您的基线保持在直边的矩形形状。3-D 效果或圆条使用户难以解释数据并获得精确值。
• 谨慎使用颜色。为每个条形应用不同的颜色会产生认知负荷。取而代之的是,在特定的列中使用颜色来突出差异,或者在含义需要时在使用颜色。
• 包括注释。柱状图很容易解释,但有时为了传达准确的数据,需要进行价值标注。
当标签很长时,水平柱状图 是一个不错的选择——例如,功能名称或任务描述。与垂直柱状图相比,您无需旋转或缩写文本即可以易于阅读的方式显示它。

如果你用曲线连接数据点,你会得到一个折线图。我们使用 折线图 来显示指标的进展,例如汇率,在垂直轴上描绘。此时,水平轴显示一个变量,该变量表示具有规则测量间隔的连续值,通常是时间(分钟、小时、日、周或月)。
您还可以使用折线图来比较多个类别跟随时间的行为。
有效折线图的建议是什么?
• 使用适当的间隔。选择太大的间隔可能无法说明暂时发生的任何波动。相反,太小的间隔可能会在图表上造成不必要的混乱,使发现重大事件变得复杂。
• 避免绘制过多的线条。它们可能难以阅读,有可能陷入无法阅读的混乱之中。
与柱状图相比,折线图不应从零值基线开始。请记住,我们需要观察度量在一个值(例如,时间)上的行为,而不是它的大小。

如果您使用折线图并为其下方的空白区域着色,您将得到一个面积图。单区域图表也擅长表示事物随时间的变化——例如,学生全年的表现。
通常,当我们说“面积图”时,我们指的是堆积面积图,其中每个区域都说明了它对总数的贡献。例如,您可以使用堆积面积图来显示拥有免费计划、基本计划和高级计划的活跃用户的数量。
重叠面积图使我们能够比较组之间的值。如果您有两个以上的区域,它们可能会让人很困惑。
为了帮助用户更轻松地阅读面积图,最好选择正确的面积顺序。通常,最稳定和最大的群体应该奠定基础,而变化最大或最小的群体应该在上面。

散点图对您来说可能看起来不像图表,因为它们让我们想起了在射击范围内击中目标的草率尝试。但是,水平轴和垂直轴相交处的每个点都代表一个单独的数据点的值。
散点图非常适合观察变量之间的关系。例如,我们可以在 A/B 测试期间将用户参与度与 CTA 按钮的两种变体(例如订阅或结帐)进行比较。x 轴显示用户点击按钮的百分比,而 y 轴显示过去 30 天内每个用户每天点击该按钮的平均次数。
请记住,绘制太多数据点可能会导致重叠,从而难以甚至不可能识别变量之间的关系。
本文内容为转载
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道rubyonrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim
Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile
我在下面定义了api端点:paramsdorequires:ids,type:Array,desc:'Arrayofgroupids'end我无法从Swagger生成的UI传递数组。如果我输入[1,2,3,4]或ids%5b%5d=1&ids%5b%5d=2&ids%5b%5d=3然后两者都无效.如果我使用数组调用spec中的api,它就可以工作。我的客户想尝试Swagger的整个api,所以我想要一个适用于SwaggerUI的解决方案。 最佳答案 我对所有情况的解决方案:paramsdorequires:ids,type:Arra
这个问题已经被问过几次了,但我尝试了提供的解决方案,但仍然没有帮助,所以我提出了一个新问题。gem文件gem'jquery-ui-rails'按照建议,我将gem放在:assets组之外Application.css~*=require_self*=requirejquery.ui*=requirebootstrap-datepicker*=requirejquery.timepicker*=require_tree.*/RailsAssetPipeline根据列出的顺序加载Assets。在这里,我把它排在列表的第2位。Application.css.scss*=require_sel
我有一个Rails应用,使用Rails5.1.6和ruby2.3.5p376我的Gemfile中有这两个gemgem'jquery-rails','~>4.3.3'gem'jquery-ui-rails','~>6.0.1'在show.html.erb中我有以下内容:$(function(){$("#datepicker").datepicker();});Date:在application.js中//=requirejquery-ui//=requirejquery//=requirerails-ujs//=requireturbolinks//=require_tree.在appl
昨晚看到IDEA官推宣布IntelliJIDEA2023.1正式发布了。简单看了一下,发现这次的新版本包含了许多改进,进一步优化了用户体验,提高了便捷性。至于是否升级最新版本完全是个人意愿,如果觉得新版本没有让自己感兴趣的改进,完全就不用升级,影响不大。软件的版本迭代非常正常,正确看待即可,不持续改进就会慢慢被淘汰!根据官方介绍:IntelliJIDEA2023.1针对新的用户界面进行了大量重构,这些改进都是基于收到的宝贵反馈而实现的。官方还实施了性能增强措施,使得Maven导入更快,并且在打开项目时IDE功能更早地可用。由于后台提交检查,新版本提供了简化的提交流程。IntelliJIDEA
Unity数据可视化图表插件XCharts3.0发布历时8个多月,业余时间,断断续续,XCharts3.0总算发布了。如果要打个满意度,我给3.0版本来个80分。对于代码框架结构设计的调整改动,基本符合预期,甚是满意。相比之前的1.0和2.0版本,我认为3.0才是一个拿得出手给广大开发者使用的版本。1.0发布的时候,很兴奋,从0.1到1.0,也磨了一年,真的等不及想给大家试用了,还特地写过一篇文章以示庆祝。那个时候,1.0虽然还还不够完善,功能也不够丰富,但它是XCharts的开始,没有1.0,也就没有后面的2.0和3.0。后面的2.0发布,做了很多改进和优化,随着版本迭代,慢慢的发现有不少硬
Handler在UI线程与子线程中的使用一、Handler基本概念Handler:其作用是在新启动的线程中发送消息,在主线程中获取和处理消息。Message:Handler接收和处理的消息对象。MessageQueue:消息队列,采用先进先出的方式来管理Message。由Looper对象进行管理,在程序创建Looper对象时,会在它的构造方法中创建MessageQueue对象,两者是相互依存的。Looper:每个线程只能拥有一个Looper对象。它在loop()方法会不断在MessageQueue中读取Message消息,分给对应的Handler来进行处理。二、Handler使用步骤在主线程中
我有一个Rails应用程序,其中有一个功能可以发送很多电子邮件。我想以异步方式的方式进行,并且我认为deliver_later方法可以做到这一点。目前,从用户单击submit到提交表单,我有一些延迟-这会导致糟糕的用户体验(这是一个非常简单的表单)。我的实现如下所示:defcreaterespond_todo|format|if@competition.save[...]send_notification_to_team_membersendenddefsend_notification_to_team_members@team.members.eachdo|member|unless