koishi-plugin-chat-analyse 1.5.2 → 1.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/index.js +9 -8
  2. package/package.json +1 -1
package/lib/index.js CHANGED
@@ -1769,13 +1769,15 @@ var Renderer = class {
1769
1769
  const wordsJson = JSON.stringify(words);
1770
1770
  const weights = words.map((w) => w[1]);
1771
1771
  const maxWeight = Math.max(...weights, 1);
1772
- const minWeight = Math.min(...weights);
1772
+ const minWeight = Math.max(Math.min(...weights), 1);
1773
1773
  const wordCount = words.length;
1774
- const area = 600 * 600;
1775
- const avgAreaPerWord = area / wordCount;
1776
- let maxFontSize = Math.round(Math.sqrt(avgAreaPerWord) * 1.8);
1777
- maxFontSize = Math.max(16, Math.min(160, maxFontSize));
1778
- const minFontSize = Math.max(4, Math.round(maxFontSize / 8));
1774
+ let calculatedMaxFontSize = Math.round(1600 / Math.sqrt(wordCount));
1775
+ let calculatedMinFontSize = Math.round(calculatedMaxFontSize / 6);
1776
+ const maxFontSize = Math.max(4, Math.min(128, calculatedMaxFontSize));
1777
+ const minFontSize = Math.max(4, Math.min(maxFontSize, calculatedMinFontSize));
1778
+ const logMaxWeight = Math.log1p(maxWeight);
1779
+ const logMinWeight = Math.log1p(minWeight);
1780
+ const logWeightRange = logMaxWeight - logMinWeight <= 0 ? 1 : logMaxWeight - logMinWeight;
1779
1781
  const cardHtml = `
1780
1782
  <div class="container" style="width: 600px;">
1781
1783
  <div class="header">
@@ -1794,7 +1796,7 @@ var Renderer = class {
1794
1796
  fontFamily: ${JSON.stringify(config.fontFamily)},
1795
1797
  weightFactor: (size) => {
1796
1798
  if (${maxWeight} === ${minWeight}) return (${minFontSize} + ${maxFontSize}) / 2;
1797
- const normalizedWeight = (size - ${minWeight}) / (${maxWeight} - ${minWeight});
1799
+ const normalizedWeight = (Math.log1p(size) - ${logMinWeight}) / (${logWeightRange});
1798
1800
  return ${minFontSize} + normalizedWeight * (${maxFontSize} - ${minFontSize});
1799
1801
  },
1800
1802
  color: ${JSON.stringify(config.color)},
@@ -1819,7 +1821,6 @@ var Renderer = class {
1819
1821
  maskImage.onload = () => {
1820
1822
  const ctx = canvas.getContext('2d');
1821
1823
  ctx.drawImage(maskImage, 0, 0, canvas.width, canvas.height);
1822
- options.clearCanvas = false; // Don't clear the mask image
1823
1824
  WordCloud(canvas, options);
1824
1825
  };
1825
1826
  maskImage.src = maskImageUrl;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-chat-analyse",
3
3
  "description": "强大而全面的聊天数据分析插件。支持多维度统计(命令、发言、消息类型、活跃度),可生成发言排行、词云图,并提供完善的数据管理。",
4
- "version": "1.5.2",
4
+ "version": "1.5.4",
5
5
  "contributors": [
6
6
  "Yis_Rime <yis_rime@outlook.com>"
7
7
  ],