Python 中使用不同图表进行数据可视化?


Python 提供了各种易于使用的库用于数据可视化。好消息是这些库可以处理小数据集或大数据集。

一些最常用的用于数据可视化的 Python 库包括:

  • Matplotlib

  • Pandas

  • Plotly

  • Seaborn

下面我们将针对一组固定数据绘制不同类型的可视化图表,以便更好地分析这些数据。

我们将分析以下数据集,并通过不同的图表进行可视化:

国家或地区年份变量
印度2019中等
1368737.513
印度20191378419.072
印度2019

1359043.965
印度2019恒定生育率1373707.838
印度2019即时替代1366687.871
印度2019零迁移1370868.782
印度2019恒定死亡率1366282.778
印度2019无变化

1371221.64
印度2019势头1367400.614

基本绘图

让我们创建一些基本图表:线形图、散点图和直方图

线形图

线形图是一种绘制图表,其中绘制一条线来指示一组特定的 x 和 y 值之间的关系。

import matplotlib.pyplot as plt
Year = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
India_Population = [1173108018,1189172906,1205073612,1220800359,1266344631,1309053980,1324171354,1339180127,1354051854,1368737513]
plt.plot(Year, India_Population)
plt.show()

输出

散点图

或者,您可能希望将数量绘制为数据点中的 2 个位置。

考虑与线形图相同的数据,要创建散点图,我们只需要修改上面代码中的一行:

plt.plot(Year, India_Population,'o')

输出

直方图

直方图在科学应用中非常常用,并且您很有可能需要在某些时候绘制它们。它们对于绘制分布非常有用。

import pandas as pd
import matplotlib.pyplot as plt
data = [
['India', 2019, 'Medium', 1368737.513],
['India', 2019, 'High', 1378419.072],
['India', 2019, 'Low', 1359043.965],
['India', 2019, 'Constant fertility', 1373707.838],
['India', 2019,'Instant replacement', 1366687.871],
['India', 2019, 'Zero migration', 1370868.782],
['India', 2019,'Constant mortality', 1366282.778],
['India', 2019, 'No change', 1371221.64],
['India', 2019, 'Momentum', 1367400.614],]
df = pd.DataFrame(data, columns = ([ 'Country or Area', 'Year(s)', 'Variant', 'Value']))
df.hist()
plt.show()

输出

饼图

import numpy as np
import matplotlib.pyplot as plt

n = 25
Z = np.ones(n)
Z[-1] *= 2.5

plt.axes([0.05, 0.05, 0.95, 0.95])
plt.pie(Z, explode = Z*.05, colors = ['%f' % (i/float(n)) for i in range(n)],
   wedgeprops = {"linewidth": 1, "edgecolor": "green"})
plt.gca().set_aspect('equal')
plt.xticks([]), plt.yticks([])
plt.show()

输出

极坐标图

代码

import numpy as np
import matplotlib.pyplot as plt

ax = plt.axes([0.5,0.05,0.95,0.95], polar=True)

N = 25
theta = np.arange(0.0, 2.5*np.pi, 2.5*np.pi/N)
radii = 10*np.random.rand(N)
width = np.pi/4*np.random.rand(N)
bars = plt.bar(theta, radii, width=width, bottom=0.0)

for r,bar in zip(radii, bars):
bar.set_facecolor( plt.cm.jet(r/10.))
bar.set_alpha(0.5)

ax.set_xticklabels([])
ax.set_yticklabels([])

plt.show()

输出

更新于: 2019年7月30日

263 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告