各种各样的图
来源:互联网 发布:linux php开发工具 编辑:程序博客网 时间:2024/04/29 04:18
有时候,我们想画某一种图,就到处找代码,现学现卖。这里,笔者就做一个收集,使用python的matplotlib加上seaborn来美化的各种各样的图。
1.曲线图
import numpy as npimport matplotlib.pyplot as pltimport seaborn as snsdef sinplot(flip=1): x = np.linspace(0, 14, 100) for i in range(1, 7): plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip) plt.show()sns.set_style("whitegrid")sinplot()
2.箱体图
sns.set_style("whitegrid")data = np.random.normal(size=(20, 6)) + np.arange(6) / 2sns.boxplot(data=data);plt.show()
3.小提琴箱体图
import numpy as npimport matplotlib.pyplot as pltimport seaborn as snssns.set_style("whitegrid")data = np.random.normal(size=(20, 6)) + np.arange(6) / 2sns.violinplot(data=data)sns.despine(offset=10, trim=True)#形成坐标裂开的样子plt.show()
4.密度图
import numpy as npimport matplotlib.pyplot as pltimport seaborn as snsx, y = np.random.multivariate_normal([0, 0], [[1, -.5], [-.5, 1]], size=300).Tcmap = sns.cubehelix_palette(light=1, as_cmap=True)sns.kdeplot(x, y, cmap=cmap, shade=True)plt.show()
5.分布图
import numpy as npimport matplotlib.pyplot as pltimport seaborn as snsx = np.random.normal(size=100)sns.distplot(x)plt.show()
6.柱状图
import numpy as npimport matplotlib.pyplot as pltimport seaborn as snsx = np.random.normal(size=100)sns.distplot(x, kde=False, rug=True)plt.show()rug设为False就是我们最常见的柱状图
同样的,如果是
sns.distplot(x, hist=False, rug=True)那么就是柱状没了。
7.联合散点图
import numpy as npimport matplotlib.pyplot as pltimport seaborn as snsimport pandas as pdmean, cov = [0, 1], [(1, .5), (.5, 1)]data = np.random.multivariate_normal(mean, cov, 200)df = pd.DataFrame(data, columns=["x", "y"])sns.jointplot(x="x", y="y", data=df)plt.show()
上面这个jointplot中间增加一些设置有更好的效果。
例如
sns.jointplot(x="x", y="y", data=df, kind="hex")
sns.jointplot(x="x", y="y", data=df, kind="kde")
8,叠加
mport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsimport pandas as pdmean, cov = [0, 1], [(1, .5), (.5, 1)]data = np.random.multivariate_normal(mean, cov, 200)df = pd.DataFrame(data, columns=["x", "y"])g = sns.jointplot(x="x", y="y", data=df, kind="kde", color='m')g.plot_joint(plt.scatter, marker="+")plt.show()散点图和上面的联合密度分布图叠加
9.配对关系矩阵图
import numpy as npimport matplotlib.pyplot as pltimport seaborn as snsimport pandas as pdiris = sns.load_dataset("iris")print irissns.pairplot(iris)plt.show()
这里,我们来看一下我们的数据集:
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
5 5.4 3.9 1.7 0.4 setosa
6 4.6 3.4 1.4 0.3 setosa
7 5.0 3.4 1.5 0.2 setosa
8 4.4 2.9 1.4 0.2 setosa
9 4.9 3.1 1.5 0.1 setosa
10 5.4 3.7 1.5 0.2 setosa
11 4.8 3.4 1.6 0.2 setosa
12 4.8 3.0 1.4 0.1 setosa
13 4.3 3.0 1.1 0.1 setosa
14 5.8 4.0 1.2 0.2 setosa
15 5.7 4.4 1.5 0.4 setosa
16 5.4 3.9 1.3 0.4 setosa
17 5.1 3.5 1.4 0.3 setosa
18 5.7 3.8 1.7 0.3 setosa
19 5.1 3.8 1.5 0.3 setosa
20 5.4 3.4 1.7 0.2 setosa
21 5.1 3.7 1.5 0.4 setosa
22 4.6 3.6 1.0 0.2 setosa
23 5.1 3.3 1.7 0.5 setosa
24 4.8 3.4 1.9 0.2 setosa
这是一个dataframe的结构,我们绘制的就是四列一其他三列分别的散点图,对角线上的则是这一个变量的分布直方图,当然,也可以改成别的。
同样的,
import numpy as npimport matplotlib.pyplot as pltimport seaborn as snsimport pandas as pdiris = sns.load_dataset("iris")g = sns.PairGrid(iris)g.map_diag(sns.kdeplot)g.map_offdiag(sns.kdeplot, cmap="Blues_d", n_levels=6);plt.show()
10.线性回归图
import numpy as npimport matplotlib.pyplot as pltimport seaborn as snsimport pandas as pdtips = sns.load_dataset("tips")# print tipssns.regplot(x="total_bill", y="tip", data=tips)plt.show()
tips的数据是这样的:
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
5 25.29 4.71 Male No Sun Dinner 4
6 8.77 2.00 Male No Sun Dinner 2
7 26.88 3.12 Male No Sun Dinner 4
8 15.04 1.96 Male No Sun Dinner 2
9 14.78 3.23 Male No Sun Dinner 2
10 10.27 1.71 Male No Sun Dinner 2
11 35.26 5.00 Female No Sun Dinner 4
12 15.42 1.57 Male No Sun Dinner 2
13 18.43 3.00 Male No Sun Dinner 4
14 14.83 3.02 Female No Sun Dinner 2
如果是下面这样的话,就是一个有条件的线性回归,或者说,分类别了。而类别就是smoker
sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips)
也可以再加入变量:
sns.lmplot(x="total_bill", y="tip", hue="smoker", col="time", data=tips)
还可以接着加。。
sns.lmplot(x="total_bill", y="tip", hue="smoker", col="time", row="sex", data=tips)
当然,还可以画成这样;
sns.jointplot(x="total_bill", y="tip", data=tips, kind="reg")
11.有点像箱体图
import numpy as npimport matplotlib.pyplot as pltimport seaborn as snsimport pandas as pdtips = sns.load_dataset("tips")sns.stripplot(x="day", y="total_bill", data=tips, jitter=True)plt.show()
12.比例变化累积图
import seaborn as snsimport numpy as npnp.random.seed(sum(map(ord, "aesthetics")))ax = plt.subplot(1, 1, 1)signal_weight_sz50.plot.area(figsize=(10, 5), ax=ax)plt.show()这种图形不知道学名是什么,平时还是有很大的概率会用到。
- 各种各样的图
- 各种各样的游戏,各种各样的人
- 各种各样的面试问题
- 各种各样的线条
- 各种各样的面试问题
- 各种各样的计算机视频
- 各种各样的“人品”
- 各种各样的飞鸽传书
- 各种各样的按钮
- 各种各样的正则表达式
- 各种各样的api查询
- 各种各样的树
- 各种各样的鼠标行政
- 各种各样的Slider
- 各种各样的文章
- 各种各样的 编程练习
- 各种各样的api查询
- 各种各样有用的网站
- Ackerman函数的递归、全排列的递归实现、整数划分的递归、二分搜索的递归、合并排序的递归、.快速排序
- 【机房重构】-存储过程
- 23种设计模式及6大原则
- Java 的泛型
- 大数据优秀博客总结
- 各种各样的图
- 关于wait、notify在火车售票战的实例
- 走进并行世界
- 如何用SSH免密登陆Linux &【如何在小组“激网”】
- k个最大的数及变种小结
- N! 求组合数!
- 《算法分析与设计》Week 15
- SpringBoot ,zookeeper 服务的注册与发现
- html5数据存储