北京大学 PKUVIS 微博可视分析工具 (WeiboEvents) 是北京大学可视化与可视分析研究组开发的微博传播分析工具。它通过直观的视图清晰地呈现出一个事件中微博转发的过程,让您能够迅速地发现事件中的关键人物、关键微博、重要观点,同时通过可视化的方式帮助您更好地分析新浪微博中事件的发生与发展过程。
您可以与这个神奇的页面进行交互,不仅可以看到故事发展的全貌,还可以像一个真正的侦探一样发掘出故事背后的秘密。
下图是本工具的主界面。
微博传播视图中有帆状视图、树状视图和圆环视图三种模式,可以在工具栏中通过, , 按钮切换。
通过, , , , , 工具配合视图上的光标操作可以调整视图位置与大小。
下载到的数据为 UTF-8 编码的 CSV 格式,Microsoft Excel 即可打开。
字段名称 | 说明 |
---|---|
id | 微博的 ID |
mid | 微博的 MID |
uid | 微博作者的 UID |
parent | 该条微博直接转发微博的 MID |
type | 微博的类型,暂无用处 |
t | 微博发布时间,Unix Timestamp,即自 1970 年 1 月 1 日 00:00:00 UTC 时间以来的秒数 |
comments_count | 微博的评论数 |
reposts_count | 微博的转发数,这个转发数是新浪给出的,可能和抓取到的数据中转发数有所不同 |
user_created_at | 微博作者创建时间,Unix Timestamp |
followers_count | 微博作者的粉丝数 |
statuses_count | 微博作者的微博数 |
friends_count | 微博作者的关注数 |
username | 微博作者的用户名 |
user_description | 微博作者的用户描述 |
city | 微博作者的城市编号,具体请查阅新浪 API 文档 |
province | 微博作者的省份编号 |
gender | 微博作者的性别,m 为男,f 为女,n 为未知 |
verified | 微博作者是否已加 V |
verified_reason | 微博作者加 V 原因 |
verified_type | 微博作者加 V 类型 |
original_text | 微博原始文本 |
text | 作者本人文本(去掉第一个 //@ 后面的内容) |
words | 分词结果,暂为空 |
emotion | 情感值,暂为空 |
WeiboEvents 提供一个自定义图表的功能,您可以用自己的算法计算统计量,然后用可视化或文本呈现。
目前我们支持的图表有直方图,更多图表类型将随后加入。
要使用这个功能,您需要输入一段 Javascript 代码,像下面这样:
function(fx, tweets) { // 这里可以写一段 Javascript 代码,用自定义的算法计算统计信息然后绘图。 // fx 中包括一些常用函数,如 fx.min, fx.max 等。 // tweets 是所有微博构成的数组。 // 在这里编写代码,实现您的算法,生成图表或文本信息。 // fx.print(text): 输出文本 // fx.draw(graph): 绘制图表 } // 注意: 不要添加多余的变量或函数,一切应在上面的函数中完成。
分别计算本事件中男、女、VIP 用户的平均粉丝数,并可视化。
function(fx, tweets) { // 我们想显示男女用户的平均粉丝数(VIP单独计算)。 // 生成一个数组,每个元素表示用户的性别 var names = ["Male", "Female", "VIP", "unknown"]; var classes = ["m", "f", "v", "n"]; var get_class = function(tweet) { if(tweet.verified) return "v"; if(tweet.gender == "m" || tweet.gender == "f") return tweet.gender; return "n"; }; var data = classes; var weights = classes.map(function(c) { var c_tweets = tweets.filter(function(t) { return get_class(t) == c; }); if(c_tweets.length == 0) return 0; return fx.mean(c_tweets, fx.$pick("followers_count")); }); // 如有需要,可以打印调试信息。 fx.print("微博总数: " + tweets.length); // 调用 draw 函数生成图表,多次调用可生成多个。 fx.chart({ title: "My Custom Chart", // 标题 type: "bars", // 类型,这里使用条形图 names: names, // 每一条的显示名称 values: classes, // 每一条的内部名称 data: data, // 数据项 weights: weights // 数据项的权重(可选参数,默认全1) }); }
我们在 fx
和 tweets
参数中提供您所需要的工具和数据。
fx
参数中包含很多实用的工具函数。
fx.print(string/object)
函数用于输出字符串或用 JSON 形式输出对象。
fx.print("Hello World!"); // 输出 Hello World! fx.print({ a: 1, b: 2 }); // 输出 {"a":1,"b":2}
fx.draw(info)
函数用于输出图表。其中 info 是一个对象,包括图表所需要的信息。
info = { type: "bars", // 图表类型: 条形图为 bars title: "Title", // 标题,可选 names: [ "name1", "name2", ... ], // 每一条的名称 values: [ value1, value2, ... ], // 每一条对应的数值或文本 data: [ data_value1, data_value2, ... ], // 数据 weights: [ weight1, weight2, ... ] // 权重,可选,默认全为 1 } // 条形图的画法是: 将每一条对应的数据的权重求和,对应到每条的长度。
这些函数分别用于计算最小值、最大值、平均值、求和、标准差、方差。用法如下示例:
// 普通数值数组 var data = [ 1, 2, 3, 4, 5 ]; var m = fx.mean(data); // m = 3 var s = fx.max(data); // m = 5 // 对象数组,第二个参数传递函数对象,用于获取属性值 var data = [ { a: 2, b: 4 }, { a: 1, b: 3 } ] var m = fx.max(data, function(d) { return d.a; }); // m = 2 var m = fx.max(data, function(d) { return d.b * 2; }); // m = 8
tweets
数组中包含每个微博的信息,每条微博是一个 Javascript 对象,这个对象和导出 CSV 时的微博对象大致相同,但有所区别,具体有如下属性:
属性名称 | 说明 |
---|---|
id | 微博的 ID |
mid | 微博的 MID,ID 和 MID 一般是一样的,我们内部都用 MID |
original_text | 微博原始文本 |
text | 作者本人文本(去掉第一个 //@ 后面的内容) |
parent | 该条微博直接转发微博的 ID,0 表示原微博 |
children | 数组,子微博的 MID 列表 |
type | 微博的类型,暂无用处 |
t | 微博发布时间,Unix Timestamp,即自 1970 年 1 月 1 日 00:00:00 UTC 时间以来的秒数 |
comments_count | 微博的评论数 |
reposts_count | 微博的转发数,这个转发数是新浪给出的,可能和抓取到的数据中转发数有所不同 |
uid | 微博作者的 UID |
username | 微博作者的用户名 |
user_description | 微博作者的用户描述 |
gender | 微博作者的性别,m 为男,f 为女,n 为未知 |
user_created_at | 微博作者创建时间,Unix Timestamp |
followers_count | 微博作者的粉丝数 |
statuses_count | 微博作者的微博数 |
friends_count | 微博作者的关注数 |
city | 微博作者的城市编号,具体请查阅新浪 API 文档 |
province | 微博作者的省份编号 |
verified | 微博作者是否已加 V |
verified_reason | 微博作者加 V 原因 |
verified_type | 微博作者加 V 类型 |
words | 分词程序得到的分词结果 |
emotion | 计算的情感值 |