我目前正在可视化大型文本信息数据库(大约 108MB,分布在 307 个文本文件中)中的单词和短语频率。我的目标是找到一种方法来快速查看哪些文件是最相关的,并且采用具有视觉吸引力的格式(尽管该项目可能还会证明仅使用文本表示总是更清晰)。
现在我有以下内容:
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}]
FileNames[ ] 生成一个列表,例如:{"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 个条目除外,全部编号]。
list3 生成一个列表,例如:{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”的工具提示,文件 7 中出现了 32 次?
最佳答案
举个例子,假设你的数据是这样的
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}]
关于wolfram-mathematica - 使用 BarChart[ ] 工具提示说明数据的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7958040/