實現原理
標籤雲最終展現出來的效果其實是由兩個html引數來控制的,分別是:font-size和color,如:
django
標籤關聯的文章越多,表示這個標籤被引用的次數越大,font-size的值也越大,color的顏色越深。考慮到體驗效果,font-size不能隨著的標籤的引用次數的增大而無限增大,否則頁面顯得非常醜陋。因此會把font-size控制在某個區間,同理color也是在乙個區間中。
這裡我把font-size設定在12到33之間陣列font_sizes,標籤的font-size屬性只能是裡面的乙個值,colors是與font_sizes對應的乙個陣列,12對應#ccc,15對應#kahrdxadadad,以此類推。
min_font_size = 12 # 最小尺寸
max_font_size = 33 # 最大尺寸
font_sizes = [min_font_size, 15, 18, 21, 24, 27, 30, max_fkahrdxont_size]
colors = ['#ccc', "#adadad", '#8e8e8e', '#6f6f6f', www.cppcns.com'#4f4f4f', '#303030', '#111', '#000']
現在關鍵問題就是如何根據標籤的引用次數(tag_ref_count)來確定它的font-size。一旦font-size了,color也隨之確定。要想標籤的font-size能夠均勻分布在陣列font_sizes中,那麼要遵循的乙個原則就是,隨著次數的增加其font-size的取值也增加,程式設計客棧而且引用次數最少的標籤使用min_font_size,引用次數最多的標籤使用max_font_size。
因此有乙個公式,min_font_size + n*step = max_font_size,step是步長,n是指引用次數最多的標籤減去引用次數最少的標籤,表示兩者之間總共有多少步step,根據此根式可以算出每一步的step值是多少,知道了步長後,就可以計算出任意乙個標籤的font-size了,任何乙個標籤到最小標籤的步數是兩者之差,因此每乙個標籤的font-size為 min_font_size + (tag_ref_count-min_ref_count)*step
源**:
# encoding: utf-8
__author__ = 'liuzhijun'
class tagcloud(object):
min_font_size = 12
max_font_size = 33
font_sizes = [min_font_size, 15, 18, 21, 24, 27, 30, max_font_size]
colors = ['#ccc', "#adadad", '#8e8e8e', '#6f6f6f', '#4f4f4f', '#303030', '#111', '#000']
def __init__(self, min_ref_count, max_ref_count):
tagcloud.min_ref_count = min_ref_count
# 如果最大標籤和最小標籤相等,那麼認為兩者的步長為0,所有標籤取同樣的font-size.
if max_ref_count == min_ref_count:
tagcloud.step = 0
else:
tagcloud.step = (tagcloud.max_font_size - tagcloud.min_font_size) / (max_ref_count - min_ref_count)
def get_tag_font_size(self, tag_ref_count):
font_size = tagcloud.min_font_size + (tag_ref_count - tagcloud.min_ref_count) * tagcloud.step
# 上面計算出來的font_size並不一定剛好是font_sizes中的某個元素, 可以能某兩個元素之間的某個值
# 因此要取最接近font_sizes中某個元素
font_size = min(tagcloud.font_sizes, key=lambda x: abs(font_size - x))
return font_size
def get_tag_color(self, tag_ref_count):
return tagcloud.colors[(tagcloud.font_sizes.index(self.get_tag_font_size(tag_ref_count)))]
輸出結果:
12,12,12,18,24,18,21,27,33,
本文標題: 如何通過python實現標籤雲演算法
本文位址: /jiaoben/python/264220.html
python 標籤雲 標籤雲演算法Python實現
實現原理 標籤雲最終展現出來的效果其實是由兩個html引數來控制的,分別是 font size和color,如 django 標籤關聯的文章越多,表示這個標籤被引用的次數越大,font size的值也越大,color的顏色越深。考慮到體驗效果,font size不能隨著的標籤的引用次數的增大而無限增...
如何在WordPress中實現彩色標籤雲
有不少的朋友挺喜歡那種效果的,所以我就把如何實現彩色標籤雲顯示的方法寫出來。其實實現標籤雲彩色顯示的方法很簡單,就是通過向 functions.php 檔案新增一段 來實現的。新增的 如下 function colorcloud text function colorcloudcallback ma...
如何通過python實現全排列
itertools模組現成的全排列 程式設計客棧 for i in itertools.permutations abcd 4 print join i 相關全排列演算法 def perm l if len l hdedvw 1 return l r for i in range len l s l...