第八章用matplotlib疟呐、seaborn脚曾、pyecharts繪制散點(diǎn)圖

本文可以學(xué)習(xí)到以下內(nèi)容:

  1. matplotlib 中文亂碼解決辦法
  2. seaborn 中文亂碼解決辦法
  3. seaborn 庫(kù)csv數(shù)據(jù)下載地址
  4. 用matplotlib、seaborn启具、pyecharts繪制散點(diǎn)圖

數(shù)據(jù)及源碼地址:https://gitee.com/myrensheng/data_analysis

散點(diǎn)圖

小凡在做數(shù)據(jù)分析的時(shí)候本讥,經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行可視化操作,這樣可以更加直觀的了解數(shù)據(jù)鲁冯,從而更好的分析數(shù)據(jù)拷沸。python常用來(lái)做數(shù)據(jù)可視化的第三方庫(kù)有:matplotlib、seaborn薯演、pyecharts撞芍。這幾個(gè)第三方庫(kù)都有各自的適用場(chǎng)景。

小凡在學(xué)習(xí)python的時(shí)候跨扮,最先接觸的是matplotlib序无,工作中又接觸到了pyecharts、seaborn好港。本篇以散點(diǎn)圖為例愉镰,重點(diǎn)在于如何方便的使用這些庫(kù)。

matplotlib繪制散點(diǎn)圖

matplotlib是python數(shù)據(jù)可視化最著名的繪圖庫(kù)钧汹,他可以很輕松的繪制出各種各樣的圖表丈探。

導(dǎo)入seaborn、pandas拔莱、numpy碗降、matplotlib等庫(kù)

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl 

在繪制圖表的時(shí)候 matplotlib 對(duì)中文會(huì)顯示成方框,可以用下面辦法解決:

# 黑體
plt.rcParams["font.family"] = "SimHei"
# plt.rcParams['font.sans-serif'] = ['SimHei']  
# 解決無(wú)法顯示符號(hào)的問(wèn)題
plt.rcParams['axes.unicode_minus'] = False    

# seaborn默認(rèn)主題
# sns.set()
# 解決Seaborn中文顯示問(wèn)題
sns.set(font='SimHei',font_scale=0.8)        

官網(wǎng)散點(diǎn)圖案例塘秦,繪制出雅虎股票相鄰兩天的調(diào)整后的收盤(pán)價(jià)(adj_close)漲跌幅度散點(diǎn)圖

官網(wǎng)散點(diǎn)圖案例

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook

# Load a numpy record array from yahoo csv data with fields date, open, close,
# volume, adj_close from the mpl-data/example directory. The record array
# stores the date as an np.datetime64 with a day unit ('D') in the date column.
# 加載數(shù)據(jù)
price_data = (cbook.get_sample_data('goog.npz', np_load=True)['price_data']
              .view(np.recarray))
# 獲取最近250天的交易數(shù)據(jù)
price_data = price_data[-250:]  # get the most recent 250 trading days
# 計(jì)算漲跌幅度
delta1 = np.diff(price_data.adj_close) / price_data.adj_close[:-1]

# Marker size in units of points^2
# 設(shè)置散點(diǎn)圖每個(gè)點(diǎn)的顏色和大小
volume = (15 * price_data.volume[:-2] / price_data.volume[0])**2
close = 0.003 * price_data.close[:-2] / 0.003 * price_data.open[:-2]
# 設(shè)置圖表和坐標(biāo)軸
fig, ax = plt.subplots()
# 設(shè)置x軸讼渊、y軸數(shù)據(jù),散點(diǎn)的大小尊剔、顏色爪幻、透明度屬性
ax.scatter(delta1[:-1], delta1[1:], c=close, s=volume, alpha=0.5)
# 設(shè)置x軸標(biāo)題
ax.set_xlabel(r'$\Delta_i$', fontsize=15)
# 設(shè)置y軸標(biāo)題
ax.set_ylabel(r'$\Delta_{i+1}$', fontsize=15)
# 設(shè)置標(biāo)題
ax.set_title('Volume and percent change')
# 顯示網(wǎng)格線
ax.grid(True)
fig.tight_layout()
# 顯示圖表
plt.show()

散點(diǎn)圖繪制結(jié)果如下:

1.png

seaborn繪制散點(diǎn)圖

seaborn是基于matplotlib封裝的高級(jí)API庫(kù),為繪制各種復(fù)雜的圖表提供了便利。

seaborn的官網(wǎng)數(shù)據(jù)下載緩慢挨稿,我已下載完成仇轻,放在【數(shù)據(jù)加工廠】文件夾下,命名為 seaborn_data

官網(wǎng)案例地址

# 加載案例數(shù)據(jù)
data_path = "../數(shù)據(jù)加工廠/seaborn_data/tips.csv"
tips = pd.read_csv(data_path)

# 修改為中文名
tips.columns = ["總賬單","小費(fèi)","性別","是否吸煙","星期幾","時(shí)間","大小"]

用 head 方法進(jìn)行數(shù)據(jù)預(yù)覽

tips.head()
2.png

繪制出:不同時(shí)間段(午餐奶甘、晚餐)吸煙的人和不吸煙的人花費(fèi)的賬單和給的小費(fèi)的關(guān)系散點(diǎn)圖

# 繪制散點(diǎn)圖
sns.relplot(
    data=tips,
    x="總賬單",
    y="小費(fèi)", 
    col="時(shí)間",
    hue="是否吸煙",
    style="是否吸煙",
#     size="size"
)

散點(diǎn)圖繪制結(jié)果如下:

3.png

pyecharts繪制散點(diǎn)圖

pyecharts將python和echarts結(jié)合起來(lái)篷店,具有良好的交互性和觀賞性,很適合用于制作數(shù)據(jù)報(bào)表臭家。

官方案例地址

from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker

df = pd.DataFrame(data={"名稱":Faker.choose(),"商家A":Faker.values(),"商家B":Faker.values()})

用 head 方法進(jìn)行數(shù)據(jù)預(yù)覽

df.head()
4.png
c = (
    Scatter()
    .add_xaxis(df["名稱"].values.tolist())
    .add_yaxis("商家A", df["商家A"].values.tolist())
    .add_yaxis("商家B", df["商家B"].values.tolist())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Scatter-VisualMap(Size)"),
        visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),
    )
)
c.render_notebook()

散點(diǎn)圖繪制結(jié)果如下:

5.png

總結(jié)

  • matplotlib和seaborn更偏向于數(shù)據(jù)可視化探索
  • pyecharts偏向于數(shù)據(jù)結(jié)果可視化展示
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疲陕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子钉赁,更是在濱河造成了極大的恐慌蹄殃,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件橄霉,死亡現(xiàn)場(chǎng)離奇詭異窃爷,居然都是意外死亡邑蒋,警方通過(guò)查閱死者的電腦和手機(jī)姓蜂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)医吊,“玉大人钱慢,你說(shuō)我怎么就攤上這事∏涮茫” “怎么了束莫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)草描。 經(jīng)常有香客問(wèn)我览绿,道長(zhǎng),這世上最難降的妖魔是什么穗慕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任饿敲,我火速辦了婚禮,結(jié)果婚禮上逛绵,老公的妹妹穿的比我還像新娘怀各。我一直安慰自己,他們只是感情好术浪,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布瓢对。 她就那樣靜靜地躺著,像睡著了一般胰苏。 火紅的嫁衣襯著肌膚如雪硕蛹。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音法焰,去河邊找鬼僵腺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛壶栋,可吹牛的內(nèi)容都是我干的辰如。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼贵试,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼琉兜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起毙玻,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤豌蟋,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后桑滩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體梧疲,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年运准,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了幌氮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胁澳,死狀恐怖该互,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情韭畸,我是刑警寧澤宇智,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站胰丁,受9級(jí)特大地震影響随橘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锦庸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一机蔗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酸员,春花似錦蜒车、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至邀泉,卻和暖如春嬉挡,著一層夾襖步出監(jiān)牢的瞬間钝鸽,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工庞钢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拔恰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓基括,卻偏偏與公主長(zhǎng)得像颜懊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子风皿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容