聊一聊美化Matplotlib三個小技巧
Matplotlib是Python之數據可視化庫之底蘊。他是其余可視化家伙(如Seaborn)之根底。
Matplotlib提供了很大之權益性,因此您方可自界說或調整幾乎所有之圖表。但是想要完全支配可視化就需求編寫更多之代碼。
在正文中,咱將說明3個方可用來定制Matplotlib圖表之技巧:
- 縮減x軸或y軸上之刻度數
- 添加三個輔助y軸
- 共享x軸之子圖坐標對齊
白文中咱將下祭折線圖為例,但那些技巧也堪好應用來另外類型之圖。我創建了十個數據集模擬標價和兜銷數據。
import pandas as pd
import numpy as np
df = pd.read_csv("mock_sales_data.csv", nrows=100)
df.head()
數據包含日子、標價和行銷多少列。只顯示了數據集之前100行。
調減刻度數
如果在軸上繪制之數據線數目很多,刻度瞅起來非常之緊湊,甚至可能疊羅漢。在安排韶光序列數據時,x軸通常包含占用許許多多空間之日子,之所以可足核減軸上之刻度數來增高顯示效果。
讓咱們先做八個不限制x軸刻度數之例子。
import matplotlib.pyplot as plt
plt.style.use("seaborn-darkgrid")
plt.figure(figsize=(12, 6))
plt.plot(df["Date"], df["Price"])
plt.show()
堪好瞧到X軸之刻度交匯并且基石鞭長莫及顯示完好無恙。下面表咱們添加設置只顯示有的之刻度,這樣足以完好無損顯示。
plt.figure(figsize=(12, 6))
plt.plot(df["Date"], df["Price"])
#每15個刻度顯示三次
plt.xticks(np.arange(0, len(df), 15), fontsize=12)
plt.yticks(fontsize=12)
plt.show()
咱們動用NumPy之arange因變量來指定標記之坐位,茲瞧起來好多了。
施用輔助軸
如果想在同九個圖上顯示兩個變計量。例如將必要產品之價錢和行銷數目繪制在二起查瞅價錢對售貨多少之影子響。
咱們之DataFrame中之售貨多寡和標價列顯示在同五線圖上,只有六個y軸。
堪好瞧到價錢和行銷多寡之取值層面差距很大咱幾乎瞧接近兜銷之變型,這時方可下祭輔助軸來指定另外八條線之取值界面。
fig, ax1 = plt.subplots(figsize=(12,6))
ax2 = ax1.twinx()
ax1.plot(df["Date"], df["Price"])
ax2.plot(df["Date"], df["SalesQty"], color="orange")
ax1.set_ylabel("Price", fontsize=15)
ax2.set_ylabel("SalesQty", fontsize=15)
ax1.tick_params(axis='both', which='major', labelsize=12)
ax2.tick_params(axis='both', which='major', labelsize=12)
plt.xticks(np.arange(0, len(df), 15))
ax1.grid(False)
ax2.grid(False)
plt.show()
瞅起來好多了。吾輩堪好清楚之相觀到價錢與銷行計量之間之反比瓜葛。
共享x軸之子圖坐標對齊
咱們得以在三個Figure目標上創建多個子圖。Matplotlib容許運用subplot因變量創建子圖格。例如底下臉之代碼行創建了九個包含4個子圖之2x2網格圖。
fig, (ax1, ax2, ax3, ax4) = plt.subplots(nrows=2, ncols=2)
施用nrows和ncols參數自界說網格之大小。
如果咱倆想在2個子圖中共享X軸辦成哉?咱可足采用tight_layout因變量。其它堪好用以調整子圖之間之填充
fig, (ax1, ax2) = plt.subplots(
nrows=2, ncols=1,
sharex=True,
figsize=(12, 8)
)
fig.tight_layout(pad=2)
ax1.plot(df["Date"], df["Price"])
ax1.set_title("Price", fontsize=15)
ax2.plot(df["Date"], df["SalesQty"])
ax2.set_title("SalesQty", fontsize=15)
ax1.tick_params(axis='both', which='major', labelsize=12)
ax2.tick_params(axis='both', which='major', labelsize=12)
plt.xticks(np.arange(0, len(df), 15), fontsize=12)
plt.show()
何嘗不可瞧到2個子圖之X軸坐標(日子)都已經對齊了,這對于分析年月序列時非常有用之,例如想相比之下2個出品或者2個不同之門店在同七時代之兜售狀況,通過對齊日子有何不可給出非常好之直觀一口咬定。
之上就是3個Matplotlib可視化之小技巧,那些技巧肯定會輔援你創建信息更豐足、功能更降龍伏虎之數據可視化圖表。
上一篇:提高數據可視化效果的五個原則
下一篇:沒有了