1 繪製條形圖python
import matplotlib # 數據可視化 from matplotlib import pyplot as plt # 配置字體 matplotlib.rcParams["font.sans-serif"] = ["simhei"] # 黑體 matplotlib.rcParams["font.family"] = "sans-serif" ''' left, x軸 height, y軸 width=0.8 ,軸寬 ''' # .bar(x軸, y軸, label=u"標籤名", color="顏色") plt.bar([1], [123], label="廣州", color="r") plt.bar([2], [141], label=u"北京") plt.bar([3], [11], label=u"上海") plt.bar([4], [41], label=u"深圳") plt.bar([5], [181], label=u"香港") plt.legend() # 繪圖 # plt.show() plt.savefig("1.jpg") # 保存圖片
2 繪製智聯招聘職位崗位數量圖web
python import urllib.request import urllib.parse import re import matplotlib import matplotlib.pyplot as plt # 數據可視化 matplotlib.rcParams["font.sans-serif"] = ["simhei"] # 配置字體 matplotlib.rcParams["font.family"] = "sans-serif" header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"} def getnumberbyname(searchname): searchname = {"kw": searchname} searchname = urllib.parse.urlencode(searchname) url = "http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E6%B7%B1%E5%9C%B3&" + searchname + "&p=1&isadv=0" print(url, '==========') req = urllib.request.Request(url, headers=header) pagesource = urllib.request.urlopen(req).read().decode('utf-8', 'ignore') restr = "<em>(\\d+)</em>" # 正則表達式,()只要括號內的數據 regex = re.compile(restr, re.IGNORECASE) mylist = regex.findall(pagesource) return mylist[0] # 崗位列表 pythonlist = ["python", "python 運維", "python 測試", "python 數據", "python web"] num = 0 for pystr in pythonlist: num += 1 print(pystr, eval(getnumberbyname(pystr))) # 繪製柱狀圖 plt.bar([num], eval(getnumberbyname(pystr)), label=pystr) plt.legend() # 繪製 plt.show() # 顯示
「詞雲」這個概念由美國西北大學新聞學副教授、新媒體專業主任裏奇·戈登(Rich Gordon)提出。「詞雲」就是對網絡文本中出現頻率較高的「關鍵詞」予以視覺上的突出,造成「關鍵詞雲層」或「關鍵詞渲染」,從而過濾掉大量的文本信息,使瀏覽網頁者只要一眼掃過文本就能夠領略文本的主旨。正則表達式
python import jieba mystr = "小姐姐,我看你挺能睡的,睡我還很差" wordsplitList = jieba.cut(mystr, cut_all=True) # 切割, 所有切割 print(wordsplitList) # 返回一個生成器對象 print('/'.join(wordsplitList)) wordsplitListforSearch = jieba.cut_for_search(mystr) # 按搜索方式切割 print(wordsplitListforSearch) print('/'.join(wordsplitListforSearch)) - 製做python崗位需求詞雲 python import wordcloud 導入詞雲 from wordcloud import STOPWORDS # 中止詞 import jieba import numpy as np # 科學計算 import matplotlib # 數據可視化 from matplotlib import pyplot as plt from PIL import Image # 圖片處理
pythonInfo = open('pythonworkinfo.txt', 'r', encoding='utf-8', errors='ignore').read() print(pythonInfo)
pythonCut = jieba.cut(pythonInfo, cut_all=True) pythonInfoList = ' '.join(pythonCut) # 返回一個生成器對象 print(pythonInfoList) backgroud = np.array(Image.open('pig.jpg')) # 將圖片格式化成RBG數組 myCloudword = wordcloud.WordCloud(font_path='simkai.ttf', # 字體路徑 width=400, height=200, mask=backgroud, # 字體顏色 scale=1, # 比例 max_words=200, # 最大字數 min_font_size=4, # 最小字體 stopwords=STOPWORDS, # 默認中止詞 random_state=50, # 隨機角度 background_color='black', # 背景顏色 max_font_size=100 # 最大字體 ).generate(pythonInfoList) #plt.imshow(myCloudword) #plt.show() 圖片展現 plt.figimage(mywordCloud) #繪製圖片 plt.imsave('python.png',mywordCloud) #保存圖片
import matplotlib.pyplot as plt from wordcloud import WordCloud import jieba text_from_file_with_apath = open('pythonworkinfo.txt',encoding='utf-8',errors='ignore').read() print(text_from_file_with_apath) wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all=True) wl_space_split = " ".join(wordlist_after_jieba) my_wordcloud = WordCloud().generate(wl_space_split) plt.imshow(my_wordcloud) plt.axis("off") plt.show() #注:碰到utf-8的編碼問題時候,能夠去源碼wordcloud.py文件中新增路徑,前提下好中文字體庫simkai.ttf FONT_PATH = os.environ.get("FONT_PATH", os.path.join(os.path.dirname(__file__), "simkai.ttf")) 覆蓋掉默認的DroidSansMono.ttf
1 多個subplot數組
# subplot.py import matplotlib.pyplot as plt import numpy as np data = np.arange(100, 201) plt.subplot(2, 1, 1) plt.plot(data) data2 = np.arange(200, 301) plt.subplot(2, 1, 2) plt.plot(data2) plt.show()
2 線形圖網絡
# plot.py import matplotlib.pyplot as plt plt.plot([1, 2, 3], [3, 6, 9], '-r') plt.plot([1, 2, 3], [2, 4, 9], ':g') plt.show()
這段代碼說明以下:運維
plot
函數的第一個數組是橫軸的值,第二個數組是縱軸的值,因此它們一個是直線,一個是折線;3 散點圖dom
# scatter.py import matplotlib.pyplot as plt import numpy as np N = 20 plt.scatter(np.random.rand(N) * 100, np.random.rand(N) * 100, c='r', s=100, alpha=0.5) plt.scatter(np.random.rand(N) * 100, np.random.rand(N) * 100, c='g', s=200, alpha=0.5) plt.scatter(np.random.rand(N) * 100, np.random.rand(N) * 100, c='b', s=300, alpha=0.5) plt.show()
這段代碼說明以下:機器學習
c
表示點的顏色,s
是點的大小,alpha
是透明度4 餅狀圖函數
# pie.py import matplotlib.pyplot as plt import numpy as np labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] data = np.random.rand(7) * 100 plt.pie(data, labels=labels, autopct='%1.1f%%') plt.axis('equal') plt.legend() plt.show()
這段代碼說明以下:學習
data
是一組包含7個數據的隨機數值labels
來指定autopct
指定了數值的精度格式plt.axis('equal')
設置了座標軸大小一致plt.legend()
指明要繪製圖例(見下圖的右上角)5 條形圖
# bar.py import matplotlib.pyplot as plt import numpy as np N = 7 x = np.arange(N) data = np.random.randint(low=0, high=100, size=N) colors = np.random.rand(N * 3).reshape(N, -1) labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] plt.title("Weekday Data") plt.bar(x, data, alpha=0.8, color=colors, tick_label=labels) plt.show()
這段代碼說明以下:
np.random.rand(N * 3).reshape(N, -1)
表示先生成21(N x 3)個隨機數,而後將它們組裝成7行,那麼每行就是三個數,這對應了顏色的三個組成部分。若是不理解這行代碼,請先學習一下Python 機器學習庫 NumPy 教程title
指定了圖形的標題,labels
指定了標籤,alpha
是透明度6 直方圖
# hist.py import matplotlib.pyplot as plt import numpy as np data = [np.random.randint(0, n, n) for n in [3000, 4000, 5000]] labels = ['3K', '4K', '5K'] bins = [0, 100, 500, 1000, 2000, 3000, 4000, 5000] plt.hist(data, bins=bins, label=labels) plt.legend() plt.show()
上面這段代碼中,[np.random.randint(0, n, n) for n in [3000, 4000, 5000]]
生成了包含了三個數組的數組,這其中: