常用图表§

散点图§

import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('iris')

sns.regplot(x=df["sepal_length"], y=df["sepal_width"])
plt.show()
散点图,显示2个数值变量之间的关系。
散点图

折线图§

import matplotlib.pyplot as plt
import numpy as np

values = np.cumsum(np.random.randn(1000, 1))

plt.plot(values)
plt.show()
折线图是最常见的图表类型之一。
将各个数据点标志连接起来的图表,用于展现数据的变化趋势。
折线图

条形图§

import numpy as np
import matplotlib.pyplot as plt

height = [3, 12, 5, 18, 45]
bars = ('A', 'B', 'C', 'D', 'E')
y_pos = np.arange(len(bars))

plt.bar(y_pos, height)
plt.xticks(y_pos, bars)
plt.show()
条形图表示多个明确的变量的数值关系。每个变量都为一个条形。条形的大小代表其数值。
条形图

直方图§

import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('iris')

sns.histplot(df, x="sepal_length", bins=20, kde=True, color="blue")
plt.show()
直方图,可视化一组或多组数据的分布情况。
直方图

连接散点图§

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.DataFrame({'x_axis': range(1, 10), 'y_axis': np.random.randn(9) * 80 + range(1, 10)})

plt.plot('x_axis', 'y_axis', data=df, linestyle='-', marker='o')
plt.show()
连接散点图就是一个线图,其中每个数据点由圆形或任何类型的标记展示。
连接散点图

棒棒糖图§

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.DataFrame({'group': list(map(chr, range(65, 85))), 'values': np.random.uniform(size=20) })

ordered_df = df.sort_values(by='values')
my_range = range(1, len(df.index)+1)

plt.stem(ordered_df['values'])
plt.xticks(my_range, ordered_df['group'])
plt.show()
棒棒糖图其实就是柱状图的变形,显示一个线段和一个圆。
棒棒糖图

饼图§

import matplotlib.pyplot as plt

size_of_groups = [12, 11, 3, 30]

plt.pie(size_of_groups)
plt.show()
饼图,最常见的可视化图表之一。
将圆划分成一个个扇形区域,每个区域代表在整体中所占的比例。
饼图

圆环图§

import matplotlib.pyplot as plt

size_of_groups = [12, 11, 3, 30]

plt.pie(size_of_groups)

my_circle = plt.Circle((0, 0), 0.7, color='white')
p = plt.gcf()
p.gca().add_artist(my_circle)

plt.show()
圆环图,本质上就是一个饼图,中间切掉了一个区域。
圆环图

面积图§

import matplotlib.pyplot as plt

x = range(1, 6)
y = [1, 4, 6, 8, 4]

plt.fill_between(x, y)
plt.show()
面积图和折线图非常相似,区别在于和x坐标轴间是否被颜色填充。
面积图

堆叠面积图§

import matplotlib.pyplot as plt

x = range(1, 6)
y1 = [1, 4, 6, 8, 9]
y2 = [2, 2, 7, 10, 12]
y3 = [2, 8, 5, 10, 6]

plt.stackplot(x, y1, y2, y3, labels=['A', 'B', 'C'])
plt.legend(loc='upper left')
plt.show()
堆叠面积图表示若干个数值变量的数值演变。
每个显示在彼此的顶部,易于读取总数,但较难准确读取每个的值。
堆叠面积图

核密度估计图§

import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('iris')

sns.kdeplot(df['sepal_width'])
plt.show()
核密度估计图其实是对直方图的一个自然拓展。
可以可视化一个或多个组的数值变量的分布,非常适合大型数据集。
核密度估计图

箱形图§

import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('iris')

sns.boxplot(x=df["species"], y=df["sepal_length"])
plt.show()
箱形图,可视化一组或多组数据的分布情况。
可以快速获得中位数、四分位数和异常值,但也隐藏数据集的各个数据点。
箱形图

小提琴图§

import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('iris')

sns.violinplot(x=df["species"], y=df["sepal_length"])
plt.show()
小提琴图可以将一组或多组数据的数值变量分布可视化。
相比有时会隐藏数据特征的箱形图相比,小提琴图值得更多关注。
小提琴图

平行座标图§

import seaborn as sns
import matplotlib.pyplot as plt
from pandas.plotting import parallel_coordinates

data = sns.load_dataset('iris', data_home='seaborn-data', cache=True)

parallel_coordinates(data, 'species', colormap=plt.get_cmap("Set2"))
plt.show()
一个平行座标图,能够比较不同系列相同属性的数值情况。
Pandas可能是绘制平行坐标图的最佳方式。
平行座标图

气泡图§

import matplotlib.pyplot as plt
import seaborn as sns
from gapminder import gapminder

data = gapminder.loc[gapminder.year == 2007]

sns.scatterplot(data=data, x="gdpPercap", y="lifeExp", size="pop", legend=False, sizes=(20, 2000))
plt.show()
气泡图其实就是一个散点图,其中圆圈大小被映射到第三数值变量的值。图表示每个变量的分布。
气泡图

矩形热力图§

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

df = pd.DataFrame(np.random.random((5,5)), columns=["a","b","c","d","e"])

sns.heatmap(df)
plt.show()
矩形热力图,矩阵中的每个值都被表示为一个颜色数据。
矩形热力图

二维密度图§

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import kde

data = np.random.multivariate_normal([0, 0], [[1, 0.5], [0.5, 3]], 200)
x, y = data.T

fig, axes = plt.subplots(ncols=3, nrows=2, figsize=(25, 10))

axes[0][0].set_title('Scatterplot')
axes[0][0].plot(x, y, 'ko')

nbins = 20
axes[0][1].set_title('Hexbin')
axes[0][1].hexbin(x, y, gridsize=nbins, cmap=plt.cm.BuGn_r)

axes[0][2].set_title('2D Histogram')
axes[0][2].hist2d(x, y, bins=nbins, cmap=plt.cm.BuGn_r)

k = kde.gaussian_kde(data.T)
xi, yi = np.mgrid[x.min():x.max():nbins * 1j, y.min():y.max():nbins * 1j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))

axes[1][0].set_title('Calculate Gaussian KDE')
axes[1][0].pcolormesh(xi, yi, zi.reshape(xi.shape), shading='auto', cmap=plt.cm.BuGn_r)

axes[1][1].set_title('2D Density with shading')
axes[1][1].pcolormesh(xi, yi, zi.reshape(xi.shape), shading='gouraud', cmap=plt.cm.BuGn_r)

axes[1][2].set_title('Contour')
axes[1][2].pcolormesh(xi, yi, zi.reshape(xi.shape), shading='gouraud', cmap=plt.cm.BuGn_r)
axes[1][2].contour(xi, yi, zi.reshape(xi.shape))

plt.show()
二维密度图或二维直方图,可视化两个定量变量的组合分布。
它们总是在X轴上表示一个变量,另一个在Y轴上,就像散点图。
然后计算二维空间特定区域内的次数,并用颜色渐变表示。
形状变化:六边形a hexbin chart,正方形a 2d histogram,核密度2d density plots或contour plots。
二维密度图

词云图§

from wordcloud import WordCloud
import matplotlib.pyplot as plt

text=("Python Python Python Matplotlib Chart Wordcloud Boxplot")

wordcloud = WordCloud(width=480, height=480, margin=0).generate(text)

plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.margins(x=0, y=0)
plt.show()
词云图是文本数据的视觉表示。
单词通常是单个的,每个单词的重要性以字体大小或颜色表示。
词云图

相关性图§

import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('iris')

sns.pairplot(df)
plt.show()
相关性图或相关矩阵图,分析每对数据变量之间的关系。
相关性可视化为散点图,对角线用直方图或密度图表示每个变量的分布。
相关性图