给定一个标准的嵌套圆形树图,你如何计算圆圈的放置位置?
我正在使用R和'portfolio'库来构建树形图.比例默认为'-1000到1000'.
例如,我需要它为'0到1000'.我知道map.market()有一个'scale'参数,但我无法弄清楚要传递给它的内容.
我需要像TreeMap一样排序的地图,但按值排序.我的地图将是巨大的,所以我不能随时对我的地图进行排序.是否存在解决此问题的好方案?也许存在符合此要求的外部罐子?
我尝试使用的containsKey方法TreeMap,但是以某种方式我遇到了问题。
存储在树形图中的对象的定义与equals()不会产生相同的结果compareTo()。这是有意的。
但是,的文档java.util.Map说:
如果此映射包含指定键的映射,则返回true。更正式地说,当且仅当此映射包含键k的映射(例如)时,才返回true
(key==null ? k==null : key.equals(k))。(最多可以有一个这样的映射。)
因此,我尝试了以下操作:
c = someModifiedObject();
boolean t1 = sm.containsKey(c);
someObject c2 = new someObject();
boolean t2 = sm.containsKey(c2);
boolean t3 = c.equals(new Chain());
int t4 = c.compareTo(new Chain());
Run Code Online (Sandbox Code Playgroud)
t1为true,因为对象位于树形图中。t3为true,因为t1等于t3(对于更改equals()运算符而言)t4为false,但是,t2也为false。似乎TreeMap使用compareTo()而不是equals()确定对象是否存在。
是否有排序映射的另一种实现,可以equals()用来检查对象是否存在?
我有以下TreeMap:
private Map<Date,WeekSchedule> weeks = new TreeMap<Date,WeekSchedule>();
Run Code Online (Sandbox Code Playgroud)
我需要删除所有条目,其日期在给定值之前.
最有效的方法是什么?
这是我到目前为止:
public void removeWeeksBefore(Date monDate){
for (Map.Entry<Date, WeekSchedule> entry : weeks.entrySet()){
if(entry.getKey().before(monDate)){
weeks.remove(entry.getKey()); //This will destroy the iterator
}else{
return;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试查看集合中的项目,但似乎Eclipse会一遍又一遍地循环:

如何查看TreeMap集合中的各个项目?
从以下代码中,我了解到,不需要为TreeSet和TreeMap重写equals()和hashCode()方法,既不需要排序也不需要搜索.
public class ComparableTest implements Comparable<ComparableTest> {
private String username;
public ComparableTest(String name) {
this.username = name;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int compareTo(ComparableTest o) {
return username.compareTo(o.getUsername());
}
@Override
public String toString() {
return this.getUsername();
}
@SuppressWarnings("unchecked")
public static void main(String[] args) {
ArrayList<ComparableTest> comparableTestsList = new ArrayList<ComparableTest>();
ArrayList<ComparableTest> comparableTestsList2;
comparableTestsList.add(new ComparableTest("Second Name"));
comparableTestsList.add(new ComparableTest("First name"));
System.out.println("Orignal Array List = " + comparableTestsList);
// making a …Run Code Online (Sandbox Code Playgroud) 我有一个类似下面的集合,当前存储为TreeMap。请注意,每个月都有多个条目。如何使用Java 8流按每个月的最大值过滤此值?
date=value
2010-01-01=2100.00,
2010-01-02=2108.74,
2010-02-01=2208.74,
2010-02-02=2217.92,
2010-03-01=2317.92,
2010-03-02=2327.57,
2010-04-01=2427.57,
2010-04-02=2437.67,
2010-05-01=2537.67,
2010-05-02=2548.22,
2010-06-01=2648.22,
2010-06-02=2659.24,
2010-07-01=2759.24,
2010-07-02=2770.72,
2010-08-01=2870.72,
2010-08-02=2882.66,
2010-09-01=2982.66,
2010-09-02=2995.07,
2010-10-01=3095.07,
2010-10-02=3107.94,
2010-11-01=3207.94,
2010-11-02=3221.29
Run Code Online (Sandbox Code Playgroud) 我有一个TreeMap<Date, Integer>,我想从该地图中获取第n个项目。我现在想到的是:
((Integer)myTreeMap.values().toArray()[index]).intValue();
Run Code Online (Sandbox Code Playgroud)
但这感觉很笨重,更不用说堆上或性能上发生了什么?
有没有一种简洁的方法可以从/获取第n项?TreeMapSortedMap
我正在使用plotlyexpress 来制作树形图。我想用标签以及父级的百分比和色阶中使用的值来注释我的数据扇区。
如何添加注释来显示color树形图参数中使用的实际值?在下面的示例代码中,我想为每个部门注释“薪水”。我还想添加一些额外的文字来描述每个部门的数字。例如,“总计百分比:”附加到百分比值以获取更多文本描述将非常适合帮助对树形图进行更多注释。任何添加自定义文本的方法都是有益的。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import plotly.express as px
d = {'count': [1,1,1,2,2,3,3,3,4],
'name': ['bob','bob','bob','shelby','shelby','jordan','jordan','jordan','jeff'],
'type': ['type1','type2','type4','type1','type6','type5','type8','type2',None],
'salary':[1000,2000,3000,10000,15000,30000,100000,50000,25000]}
df = pd.DataFrame(data=d)
# group data and aggregate
df_plot = df.groupby(['name','type'])[['salary','count']].sum().reset_index()
avg_salary = df_plot['salary'].sum()/df_plot['count'].sum()
# plot treemap
fig = px.treemap(df_plot,
values='count',
color='salary',
color_continuous_scale='balance',
color_continuous_midpoint=avg_salary,
path=['type','name'])
fig.data[0].textinfo = 'label+value+percent parent'
fig.show()
Run Code Online (Sandbox Code Playgroud)