seaborn里的lineplot函數(shù)所傳數(shù)據(jù)必須為一個pandas數(shù)組涯雅,
這一點(diǎn)跟matplotlib里有較大區(qū)別,并且一開始使用較為復(fù)雜辩诞,
但誰讓seaborn好看呢课幕,只有入坑了。
那么如何利用sns.lineplot畫如matplotlib的線段呢(包含節(jié)點(diǎn))露该?
首先sns.lineplot里有幾個參數(shù)值得注意睬棚。
- x: plot圖的x軸label
- y: plot圖的y軸label
- ci: 與估計(jì)器聚合時繪制的置信區(qū)間的大小
- data: 所傳入的pandas數(shù)組
當(dāng)我們的pands數(shù)組里僅有兩列數(shù)據(jù)時:
具體代碼如下:(注意:1. matplotlib和seaborn是可以混用的
; 2. seaborn畫圖更偏向數(shù)據(jù)統(tǒng)計(jì)
)
import seaborn as sns
import pandas as pd
import numpy as np
from pandas import DataFrame
import matplotlib.pyplot as plt
fig = plt.figure(dpi=100)
plt.rc('font', family='STFangsong')
sns.set(style="darkgrid")
# ============ 設(shè)置xlabel及ylabel ============
plt.xlim(102, 48)
x = np.linspace(100, 50, 6)
plt.xticks(x, fontsize=11)
plt.ylim(0, 1.04)
y = np.linspace(0, 1, 11)
plt.yticks(y, fontsize=11)
plt.xlabel('品質(zhì)因子', fontdict={'color': 'black',
'family': 'STFangsong',
'weight': 'normal',
'size': 15})
plt.ylabel('F', fontdict={'color': 'black',
'fontstyle': 'italic',
'family': 'Times New Roman',
'weight': 'normal',
'size': 15})
# ================================
# ============ 顯示數(shù)據(jù) ============
x = np.linspace(100, 50, 6)
y = np.array([0.194173876, 0.161086478, 0.138896531, 0.129826697, 0.133716787, 0.152458326])
summary = []
for i in range(6):
x_t = x[i]
y_t = y[i]
summary.append([x_t, y_t])
data = DataFrame(summary, columns=['品質(zhì)因子', 'signal'])
# ================================
# 在圖上繪制節(jié)點(diǎn)
sns.scatterplot(x="品質(zhì)因子",
y="signal",
data=data)
# 在圖上繪制線段
sns.lineplot(x="品質(zhì)因子",
y="signal",
ci=None,
data=data)
plt.show()
輸出: