Wolfram mathematica 使用条形图[]工具提示说明数据的来源

Wolfram mathematica 使用条形图[]工具提示说明数据的来源,wolfram-mathematica,visualization,Wolfram Mathematica,Visualization,我目前正在一个大型文本信息数据库中可视化单词和短语的频率(307个文本文件中大约108MB)。我的目标是找到一种方法来快速查看哪些文件最相关,并且以一种视觉上最吸引人的格式(尽管这个项目可能也会证明,只有文本表示总是更清晰) 现在我有以下几点: SetDirectory["/MYMATHEMATICADIRECTORY/"]; filelist = FileNames[]; viewerCount1 = {0}; viewerCount2 = {0}; word1 = "freedom"; wo

我目前正在一个大型文本信息数据库中可视化单词和短语的频率(307个文本文件中大约108MB)。我的目标是找到一种方法来快速查看哪些文件最相关,并且以一种视觉上最吸引人的格式(尽管这个项目可能也会证明,只有文本表示总是更清晰)

现在我有以下几点:

SetDirectory["/MYMATHEMATICADIRECTORY/"];
filelist = FileNames[];
viewerCount1 = {0};
viewerCount2 = {0};
word1 = "freedom";
word2 = "liberty";
Do[
  searchDB = StringSplit[Import[filename]];
  AppendTo[viewerCount1, Count[searchDB, word1]];
  AppendTo[viewerCount2, Count[searchDB, word2]];
, {filename, filelist}]

list3 = Take[viewerCount1, {2, -1}]
list4 = Take[viewerCount2, {2, -1}]
文件名[]生成一个列表,如:{“001ABbenevolat.txt cleaned.txt”、“002abnature.txt cleaned.txt”、“003aboriginaldocs.txt cleaned.txt”、“004ABpresse.txt cleaned.txt”、“005acadian.txt cleaned.txt”、“006acadiedelile.txt cleaned.txt”、“007acfa.txt cleaned.txt”}[除307个条目外,全部编号]

列表3生成一个列表,例如:{0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 100, 2, 0, 0, 0, 10, 1, 7, 0, 0, 0, 0, 23, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 9, 0, 1, 0, 1, 0, 5, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 4, 0, 0, 0, 1, 11, 0, 2, 0, 0, 2, 7, 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 13,...}等等

命令:

BarChart3D[{list3, list4}, BarSpacing -> {0.5, 0}, ChartLayout -> "Grid"]
生成与我想要的内容相近的内容(将它们想象成竖立的文件夹)。但是,我想添加有意义的工具提示。默认情况下,它会显示频率。是否有一种快速的方法也包括频率附加到的文件名以及频率?例如,工具提示会显示“007acfa.txt-cleaned.txt--32”,其中32个出现在文件7中?

这应该可以:

BarChart3D[{list3, list4}, 
   ChartLabels -> Placed[filelist, Tooltip],
   ChartLayout -> "Grid",
   BarSpacing -> {0.5, 0}]
编辑

忘记了您还希望在工具提示中显示高度,您确实希望使用
标签功能
。让我们继续并包括单词本身:

BarChart3D[{list3, list4}, 
   ChartLabels -> {Placed[{word1, word2}, None], Placed[filelist, None]}, 
   ChartLayout -> "Grid", 
   BarSpacing -> {0.5, 0}, 
   LabelingFunction -> (Tooltip[Row[Flatten[{#3, #1}], " - "]] &)
   ]

例如,假设您的数据如下

list3 = RandomInteger[30, 30];
list4 = RandomInteger[30, 30];
filelist = Table["file " <> ToString[i], {i, 30}];
BarChart3D[{
  MapThread[Tooltip[#2, Row[{#, " -- ", #2}]] &, {filelist, list3}],
  MapThread[Tooltip[#2, Row[{#, " -- ", #2}]] &, {filelist, list4}]}, 
 BarSpacing -> {0.5, 0}, ChartLayout -> "Grid"]
编辑

另一种方法是使用
LabelingFunction

BarChart3D[{list3, list4}, 
 LabelingFunction -> 
  (Placed[Row[{filelist[[Last[#2]]], "  -- ", #1}], Tooltip] &), 
 ChartLayout -> "Grid", BarSpacing -> {0.5, 0}]

在计算
sortedfrequency
时,
Sort
的第二个参数中是否缺少字符?同样,如果使用
{}初始化
viewerCount#
,你不应该需要
Take
来构建
list3
等…因此
list3
中的第i个数字对应于第i个文件中出现的单词?@BrettChampion
sortedfrequency
是一个冗余命令-我已编辑以删除它。感谢
Take
的建议,我知道必须有“这是一个比我更好的方法。@BrettChampion是的,
list3
中的第个数字对应于第个文件,也就是说,list3中的第七个数字将是文件007acfa.txt-cleaned.txt。