- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我的android应用程序项目创建加权热图。我看看它的谷歌文档。我不明白如何使用颜色数组和起点数组创建新的渐变。起始数组表示为
每种颜色的起点,以最大强度的百分比表示。
这是什么意思?如何将颜色阵列与起点阵列联系起来?
int[] colors = {
Color.GREEN, // green(0-50)
Color.YELLOW, // yellow(51-100)
Color.rgb(255,165,0), //Orange(101-150)
Color.RED, //red(151-200)
Color.rgb(153,50,204), //dark orchid(201-300)
Color.rgb(165,42,42) //brown(301-500)
};
float[] startpoints = {
};
最佳答案
以下是一些假设:
渐变colorMapSize为1000(默认值),但应设置为500
颜色值的长度是6
startPoints长度为6(必须与颜色相同)
colors数组在OP中指定
startingPoints数组应为{0.1F,0.2F,0.3F,0.4F,0.6F,1.0F}
这是一个有助于讨论的图表:
色彩图
首先要了解的是colorMap。这是由
渐变生成器。它是一个'int'数组,默认大小为1000,但
可在其中一个构造函数中自定义-在您的示例中建议500。因此,此数组中的每个值都是一个颜色值。 (大小会影响渐变的分辨率。)
colorMap中的颜色值受2个产生颜色的控件的影响
interval:startPoints数组和colors数组。在你的例子中
是6个颜色间隔。
颜色间隔定义为开始颜色和结束颜色以及数字
范围内的“ colorMap”广告位。任何给定间隔的所有colorMap值
使用该范围的开始/结束颜色进行插值。
如果startPoints数组的第一个值为0,则第一个颜色间隔
假定为纯色-非零表示从透明到最希望的第一种颜色的过渡。 (请参见将startPoints设置为0并注意外部区域的锯齿状的示例。)
如果startPoints数组的第一个值不为0,则第一个颜色
间隔定义为从第一种颜色(colors [0])和范围开始
colorMapSize *的第一个起点,例如500 * 0.1 = 50
并以相同的颜色结束。
对于所有剩余的定义颜色,将生成一个间隔-再次使用
起始colorMap插槽,起始颜色(即先前的颜色末端),
和结束颜色(这是表格中的当前颜色)和范围。
如果最后的startingPoint不是1.0,则使用最后的颜色作为开始
停下来在此示例中,最好是1.0。
(不透明度适用于整个图层,并且仅影响颜色的Alpha通道。)
瓷砖
这是欣赏“强度”的地方,而WeightedLatLng可以发挥作用。
生成地图时,它将可视区域划分为图块-
瓦片数是缩放级别的函数。缩放级别为0时有1个图块,
并且任意缩放级别的瓦片数为2 ^ n(其中n是缩放级别)。
每个磁贴进一步划分为存储桶。桶数是一个函数
缩放级别和半径(模糊)。每个存储桶对应一个地理区域
磁贴内的区域-考虑矩形网格。
当前图块内部的点是从数据集中获得的。
对于图块地理范围内的所有点,将点的强度值添加到其对应的存储桶中。默认情况下,一个点的强度值为1。WeightedLatLng允许您通过将该值从1更改为某个数字来偏斜一个点(更大以增加重要性,较小以减少重要性)。因此,结果是铲斗强度计数受到了LatLngs的影响。
计算强度桶后,使用
在第一部分中确定的colorMap。请注意,强度值的范围按比例缩放到colorMap的大小,以使最大强度值映射到最后一种颜色。
然后将存储桶应用于图块,并将图块制作为位图
并被渲染。
例
例如,我使用了萨克拉曼多的一些犯罪数据。我首先创建了一个非加权热图。然后创建加权热图,通过将NCIC代码为2404(车辆盗窃)的犯罪强度指定为5.0(针对任何点,默认值为1.0)来增强自动盗窃的重要性。 5.0有点随意,实际上取决于数据和您要传达的内容。
非加权/加权(通过车辆盗窃)
还有一个示例,其中第一个startPoint [0]为0.0-表明缺少从透明到初始颜色的过渡:
以下是MapActivity的相关部分:
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.getUiSettings().setZoomControlsEnabled(true);
// Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
addHeatMapWeighted();
//addHeatMap();
}
public void addHeatMapWeighted() {
Gradient gradient = new Gradient(colors,startpoints);
List<WeightedLatLng> wDat = new CrimeData().getWeightedPositions();
HeatmapTileProvider provider = new HeatmapTileProvider.Builder().weightedData(wDat).gradient(gradient).build();
mMap.addTileOverlay(new TileOverlayOptions().tileProvider(provider));
}
public void addHeatMap() {
Gradient gradient = new Gradient(colors,startpoints);
List<LatLng> cDat = new CrimeData().getPositions();
HeatmapTileProvider provider = new HeatmapTileProvider.Builder().data(cDat).gradient(gradient).build();
mMap.addTileOverlay(new TileOverlayOptions().tileProvider(provider));
}
int[] colors = {
Color.GREEN, // green(0-50)
Color.YELLOW, // yellow(51-100)
Color.rgb(255,165,0), //Orange(101-150)
Color.RED, //red(151-200)
Color.rgb(153,50,204), //dark orchid(201-300)
Color.rgb(165,42,42) //brown(301-500)
};
float[] startpoints = {
0.1F, 0.2F, 0.3F, 0.4F, 0.6F, 1.0F
};
关于android - Android中的加权热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49465240/
我有一个包含三个字段的表:ID、值、计数 ID和Value构成PK。 给定一个 ID,我想选择一个按计数加权的值,然后将计数减一。 如果我有 1 A 2 1 B 3 我应该有 2/5 的机会获
我有一个数据集,其中开始日期和日期没有特定的顺序。我想创建一组新的几个月列和数据的加权平均值。 del 代表否。日期范围内的天数 d 是该时间段的平均值 from datetime import da
我正在开发的一个软件应用程序需要能够根据用户当前拥有的任务数量将任务分配给一组用户,其中任务最少的用户最有可能获得下一个任务。然而,当前的任务负载应该被视为一个权重,而不是一个绝对的顺序定义。 IOW
我正在尝试用字典创建一个光学字符识别系统。 事实上,我还没有实现字典=) 我听说有一些基于 Levenstein 距离的简单指标,这些指标考虑了不同符号之间的不同距离。例如。 'N' 和 'H' 彼此
三个AI新手问题: 为什么 A* 可以采用启发式算法来找到最佳路径? 如果障碍物挡住了道路,系带制动技术有什么用? 什么算法适合在有障碍物的网格上找到路径? (像吃 bean 一样) 第一个问题让我们
我有一个 2396x34 double matrix命名 y其中每一行 (2396) 代表一个单独的情况,由 34 个连续的时间段组成。 我也有 numeric[34]命名 x这代表了 34 个连续时
我有一个如下所示的多维数组,我想做一些奇特的排序,但我不知道如何处理它。我想首先按第 5 个元素对数组元素进行排序,然后是第 4 个元素,然后是第 3 个元素,然后是第 2 个元素,然后是第 1 个元
我想对具有三个变量(列)的数据集(即 Sample_Data)进行 Kmeans 聚类,如下所示: A B C 1 12 10 1 2 8 11 2 3 14 10
我环顾四周,发现了一些与我类似的问题,但它们缺乏解释。 我正在尝试搜索包含多列的表格。我希望匹配列数最多的行位于顶部,匹配列数最少的行位于底部。我见过几种方法。我目前的糟糕方式是使用大量 MySQL
我必须大量使用加权概率分布,并且想使用 violinplots 进行一些可视化。但是,我找不到在任何常见嫌疑人(matplotlib、seaborn、bokeh 等)中使用加权数据创建这些数据的方法。
我会尽量做到彻底: 我有 11 个小组。 我有很多人需要在这些组之间进行划分 每个人都有一个加权偏好列表。通常在该列表上有 3 个有序的组,但一些异常值会有更多或更少的组。 IE:人 1 有进入 A
我有 100 个顶点和一个计算顶点 x 和顶点 y 之间边的权重的函数 f(x,y)。 f 不是特别昂贵,因此如果需要,我可以生成带权重的索引邻接列表。 有哪些有效、易处理的方法可以通过最小化或最大化
谁能给我指出一个关于如何构建(乘法和/或加法)加权 voronoi 图的引用实现,该图最好基于 Fortune 的 voronoi 算法? 我的目标:给定一组点(每个点都有一个权重)和一组边界边(通常
有没有一种方法可以使用标准库进行漂亮而优雅的加权洗牌?有 std::discrete_distribution。我想要的是这样的: std::vector data { N elements }; s
其实不是RANDBETWEEN()。我正在尝试创建一个 UDF 来返回数组中数字的索引,其中数字越大,被选择的可能性就越大。 我知道如何将概率分配给工作表中的随机数(即对概率之和使用 MATCH()
canvas 占据了整个屏幕,从绿色可以看出。canvasFrame 有两行,其中第二行是滚动文本小部件。第二行也被加权但是它没有填满屏幕,因为绿色区域应该是黄色的。如何让第二行填充空白并让滚动的文本
我正在研究 HITS 算法实现的加权版本。 这是 Hits 算法的公式(非加权版本): 其中HITS A为权威评分,HITS H为hub评分,维基百科算法伪代码: G := set of pages
我不确定如何实现这个,但这里是描述: 取一个 0-10 之间的数字作为输入(0 总是返回 false,10 总是返回 true) 将接收到的参数作为输入,并传递给一个函数,在运行时确定所需的 bool
所以我在 Pandas DataFrame 中有两个值列和两个权重列,我想生成第三列,它是这两列的分组依据、加权平均值。 因此: df = pd.DataFrame({'category':['a',
我正在尝试使用 ggridges 包(基于 ggplot2)创建一个 joyplot。一般的想法是 joyplot 创建很好缩放的堆叠密度图。但是,我似乎无法使用加权密度生成其中之一。在创建 joyp
我是一名优秀的程序员,十分优秀!