Python数据可视化

代码已放到GitHub

1.使用matplotlib绘制最简单的趋势图

先查看一下数据

import pandas as pd
unrate = pd.read_csv('unrate.csv')  # 使用pandas读取数据
unrate['DATE'] = pd.to_datetime(unrate['DATE'])
print(unrate.head(12)) # 查看前12条数据
         DATE  VALUE
0  1948-01-01    3.4
1  1948-02-01    3.8
2  1948-03-01    4.0
3  1948-04-01    3.9
4  1948-05-01    3.5
5  1948-06-01    3.6
6  1948-07-01    3.6
7  1948-08-01    3.9
8  1948-09-01    3.8
9  1948-10-01    3.7
10 1948-11-01    3.8
11 1948-12-01    4.0

绘图

import matplotlib.pyplot as plt
#%matplotlib inline
#Using the different pyplot functions, we can create, customize, and display a plot. For example, we can use 2 functions to :
first_twelve = unrate[0:12]
plt.plot(first_twelve['DATE'], first_twelve['VALUE'])
plt.show()

# 我们可以设置x轴的标签旋转
plt.plot(first_twelve['DATE'], first_twelve['VALUE'])
plt.xticks(rotation=45)
#print help(plt.xticks)
plt.show()

#xlabel(): 给x轴标签命名
#ylabel(): 给y轴标签命名
#title(): 绘图标题plt.plot(first_twelve['DATE'], first_twelve['VALUE'])
plt.xticks(rotation=90)
plt.xlabel('Month')
plt.ylabel('Unemployment Rate')
plt.title('Monthly Unemployment Trends, 1948')
plt.show()

2.绘制多张图

2.1绘制子图

例子1

#add_subplot(first,second,index) first:第几行,second:第几列,index:第几个图.
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(3,2,1)
ax2 = fig.add_subplot(3,2,2)
ax3 = fig.add_subplot(3,2,3)
ax4 = fig.add_subplot(3,2,6)
plt.show()

例子2.例如绘制两个子图

import numpy as np
fig = plt.figure()
#fig = plt.figure(figsize=(3, 3))
ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(2,1,2)ax1.plot(np.random.randint(1,5,5), np.arange(5))
ax2.plot(np.arange(10)*3, np.arange(10))
plt.show()

2.2把多条曲线绘制到一个图里

例子1.用不同颜色绘制多条曲线

unrate = pd.read_csv('unrate.csv')
unrate['DATE'] = pd.to_datetime(unrate['DATE'])fig = plt.figure(figsize=(10,6))
unrate['MONTH'] = unrate['DATE'].dt.month
unrate['MONTH'] = unrate['DATE'].dt.month
colors = ['red', 'blue', 'green', 'orange', 'black']  #颜色
for i in range(5):start_index = i*12end_index = (i+1)*12subset = unrate[start_index:end_index]plt.plot(subset['MONTH'], subset['VALUE'], c=colors[i])plt.show()

例子2.把标签显示出来

fig = plt.figure(figsize=(10,6))
colors = ['red', 'blue', 'green', 'orange', 'black']
for i in range(5):start_index = i*12end_index = (i+1)*12subset = unrate[start_index:end_index]label = str(1948 + i)plt.plot(subset['MONTH'], subset['VALUE'], c=colors[i], label=label)
plt.legend(loc='best')
# plt.legend(loc='upper left')
#print help(plt.legend)
plt.show()

绘制条形图

例子1.

import pandas as pd
# fandango_scores.csv为电影评分的数据,第一列是电影名称,其余列是评分公司对应的评分
reviews = pd.read_csv('fandango_scores.csv')
cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']
norm_reviews = reviews[cols]
print(norm_reviews[:1])
                             FILM  RT_user_norm  Metacritic_user_nom  \
0  Avengers: Age of Ultron (2015)           4.3                 3.55   IMDB_norm  Fandango_Ratingvalue  Fandango_Stars
0        3.9                   4.5             5.0
import matplotlib.pyplot as plt
from numpy import arangenum_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']# 取第一行的电影评分数据进行绘制条形图,loc[行索引,列索引]取行列对应的数据
# 柱状图高度,即y轴
bar_heights = norm_reviews.loc[0,num_cols].values
print(bar_heights)
# 柱状图的水平位置,即x轴
bar_positions = arange(5) + 0.75
print(bar_positions)
fig, ax = plt.subplots()
ax.bar(bar_positions, bar_heights, 0.5)
plt.show()
[4.3 3.55 3.9 4.5 5.0]
[0.75 1.75 2.75 3.75 4.75]

例子2.竖状条形图

# 默认x轴是整数值1,2,3,4,...
# 我们可以使用 Axes.set_xticks() 来改变x轴的标签值:num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']
bar_heights = norm_reviews.loc[0, num_cols].values
bar_positions = arange(5) + 0.75
tick_positions = range(1,6)
fig, ax = plt.subplots()ax.bar(bar_positions, bar_heights, 0.5)
ax.set_xticks(tick_positions)
ax.set_xticklabels(num_cols, rotation=45)ax.set_xlabel('Rating Source')
ax.set_ylabel('Average Rating')
ax.set_title('Average User Rating For Avengers: Age of Ultron (2015)')
plt.show()

例子3.横状条形图

num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']bar_widths = norm_reviews.loc[0, num_cols].values
bar_positions = arange(5) + 0.75
tick_positions = range(1,6)
fig, ax = plt.subplots()
ax.barh(bar_positions, bar_widths, 0.5)ax.set_yticks(tick_positions)
ax.set_yticklabels(num_cols)
ax.set_ylabel('Rating Source')
ax.set_xlabel('Average Rating')
ax.set_title('Average User Rating For Avengers: Age of Ultron (2015)')
plt.show()

散点图

#Let's look at a plot that can help us visualize many points.
fig, ax = plt.subplots()
ax.scatter(norm_reviews['Fandango_Ratingvalue'], norm_reviews['RT_user_norm'])
ax.set_xlabel('Fandango')
ax.set_ylabel('Rotten Tomatoes')
plt.show()

绘制直方图(频数图)

例子1

import pandas as pd
import matplotlib.pyplot as plt
reviews = pd.read_csv('fandango_scores.csv')
cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue']
norm_reviews = reviews[cols]fig, ax = plt.subplots()
# 频数图,水平方向表示范围,高度表示在某个范围的个数
ax.hist(norm_reviews['Fandango_Ratingvalue'])
# bins=,可以指定多少个箱子,默认是10个
ax.hist(norm_reviews['Fandango_Ratingvalue'],bins=20)
#ax.hist(norm_reviews['Fandango_Ratingvalue'], range=(4, 5),bins=20)
plt.show()

绘制箱型图

不太常用,从下到上依次是最小值,1/4分位数,1/2分位数,3/4分位数,最大值

例子1

fig, ax = plt.subplots()
ax.boxplot(norm_reviews['RT_user_norm'])
ax.set_xticklabels(['Rotten Tomatoes'])
ax.set_ylim(0, 5)
plt.show()

例子2

num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue']
fig, ax = plt.subplots()
ax.boxplot(norm_reviews[num_cols].values)
ax.set_xticklabels(num_cols, rotation=90)
ax.set_ylim(0,5)
plt.show()

绘制动态图

例子1.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# jupyter运行,需要输入下面这个命令
%matplotlib qt5N = 20
plt.close() # 关闭打开的图形窗口
def anni():fig = plt.figure()plt.ion() # 打开交互式绘图interactivefor i in range(N):plt.cla()           # 清除原有图像plt.xlim(-0.2,20.4) # 设置x轴坐标范围plt.ylim(-1.2,1.2)  # 设置y轴坐标范围# 每当i增加的时候,增加自变量x的区间长度,可以理解为不断叠加绘图,所以每次循环之前都使用plt.cla()命令清除原有图像x = np.linspace(0,i+1,1000) y = np.sin(x)plt.plot(x,y)plt.pause(0.1)# plt.ioff() #关闭交互式绘图plt.show()anni()

例子2.

fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = plt.plot([], [], 'ro',animated=True)def init():ax.set_xlim(-np.pi,np.pi)ax.set_ylim(-1, 1)return ln,def update(frame):xdata.append(frame)ydata.append(np.sin(frame))ln.set_data(xdata, ydata)return ln,anim = animation.FuncAnimation(fig, update, frames=np.linspace(-np.pi,np.pi, 90),interval=10,init_func=init,blit=True)
anim.save('test2.gif',writer='pillow')
plt.show()

例子3

import numpy as np
import matplotlib.pyplot as pl
import matplotlib.animation as animationx = np.linspace(0, 10, 100)
y = np.sin(x)fig, ax = plt.subplots()
line, = ax.plot(x, y, color='k')def update(num, x, y, line):line.set_data(x[:num], y[:num])line.axes.axis([0, 10, -1, 1])return line,ani = animation.FuncAnimation(fig, update, len(x), fargs=[x, y, line],interval=25, blit=False)
ani.save('test3.gif',writer='pillow')
plt.show()

代码已放到GitHub

Python数据可视化(趋势图、条形图、动态图)相关推荐

  1. python数据可视化(matplotlib条形图、饼图、箱状图、直方图、折线图)(代码)

    python数据可视化(matplotlib条形图.饼图.箱状图.直方图.折线图) matplotlib(条形图) 一.简单条形图 1.简单垂直条形图 2.简单水平条形图 二.水平交错条形图 三.垂直 ...

  2. 数据可视化实验:python数据可视化-柱状图,条形图,直方图,饼图,棒图,散点图,气泡图,雷达图,箱线图,折线图

    数据可视化实验:python数据可视化 实验8-12:大数据可视化工具-python 目录 1柱状图 2条形图 3直方图 4饼图 5棒图 6散点图 7气泡图 8雷达图 9箱线图 10折线图 1柱状图 ...

  3. Python 数据可视化:Stack Graph 堆叠图,标准化堆叠柱形图,标准化的同时还能反应数据量大小的堆叠图(放入自写库,一行代码搞定复杂细节绘图)

    本文已在公众号 " 数据分析与商业实践 " 首发.关注一下~,更多商业数据分析案例源码等你来撩.后台回复 "堆叠图" ,即可获取本文的案例示范与包含详细注释的源 ...

  4. python中数据用折线图表示_使用PyQtGraph进行Python数据可视化:绘制精美折线图(以 上证指数走势为例)...

    在前两篇文章中,我们介绍了: 在了解了基本的PyQtGraph模块绘制图形功能之后,我们通过几个常用常见的数据可视化图形来演示使用PyQtGraph进行Python数据可视化. 本篇,我们介绍使用Py ...

  5. python绘制漂亮的线_使用PyQtGraph进行Python数据可视化:绘制精美线图(以上证指数走势为例)...

    在上两篇文章中,我们介绍了: 本篇文章将介绍使用PyQtGraph绘制一个精美折线图, 在了解了基本的PyQtGraph模块绘制图形功能之后,我们通过几个常用常见的数据可视化图形来演示使用PyQtGr ...

  6. python大量数据折线图-Python数据可视化练习:各种折线图的用法

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于python数据分析之禅 ,作者鸟哥 折线图是排列在工作表的列或行 ...

  7. python数据可视化—用pyecharts画雷达图

    什么是pyecharts pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开源的一个数据可视化 JS 库.用 Echarts 生成的图可视化效果非常棒,pyech ...

  8. Python数据可视化的例子——条形图(bar)

    1.matplotlib模块 应用matplotlib模块绘制条形图,需要调用bar函数,关于该函数的语法和参数含义如下: bar(x, height, width=0.8, bottom=None, ...

  9. Python数据可视化案例二:动态更新数据

    在开发与数据监测和数据可视化有关的系统时,我们会需要根据最新的数据对图形进行更新.下面的代码模拟了这种情况,单击Start按钮时会更新数据并重新绘制图形使得曲线看上去在移动一样,单击Stop按钮则停止 ...

  10. python 桑基图 地理坐标_【转载】Python数据可视化-实现Sankey桑基图

    根据不完整统计,90%想用sankey图的朋友都是因为被它炫酷的外表所吸引,举个例子: 在这里插入图片描述 关于sankey图的定义是这样描述的: 即桑基能量分流图,也叫桑基能量平衡图.它是一种特定类 ...

最新文章

  1. 如何检查你的项目是不是真的需要用到 AI?
  2. python程序员薪资-python工资高还是java?
  3. [Silverlight]使用MVVM模式打造英汉词典
  4. 循环自相关函数和谱相关密度(三)——实信号、复信号模型下的BPSK信号循环谱MATLAB仿真结果及代码
  5. 王思聪怒了!大众点评紧急道歉:相关账户已冻结
  6. hdu 敌兵布阵(线段树之单点更新)
  7. comparator比较器用法_电压跟随器的这些点,确定都懂了吗?如果设计成同相端追随反向端会怎样? #运放...
  8. 探讨【IGE】的源代码【二】。
  9. 商品展示页面html模板,CSS3电商网站商品展示窗UI模板
  10. Xmodem/Ymodem/Zmodem协议详解
  11. Overlay network
  12. 技师学院计算机老师,技师学院计算机工程系组织开展观摩课活动
  13. MySQL详解(六):MySQL服务器性能优化
  14. BZOJ 3168: [Heoi2013]钙铁锌硒维生素
  15. 怎样把word转换成excel表格格式
  16. 一叶知秋:通过Incloud Rail感受浪潮超融合架构
  17. matlab实现无人机自组网,无人机自组网技术.pdf
  18. IC617 PDK CDB格式转OA格式
  19. RTB 广告投放流程详解
  20. IIS打开aspx文件

热门文章

  1. icloud邮箱android手机,如何用iCloud账号登陆邮箱 使用方法【详解】
  2. Kafka报错: Topic(s) [publish] is/are not present and missingTopicsFatal is true
  3. Springboot-JAVA实现组织树形结构
  4. SpringMVC+LayUI 交通事故管理系统
  5. IT人物TOP100英雄人物榜
  6. 电脑管家软件搬家没有历史记录
  7. android写代码截屏微信,微信等头像截取的实现 - 拉风的道长_Android之路 - OSCHINA - 中文开源技术交流社区...
  8. 查看显卡型号命令_ubuntu查看显卡型号方法有哪些
  9. 机器学习之朴素贝叶斯、贝叶斯信念网络
  10. 用基带等效的方式仿真8-DPSK载波调制信号在AWGN信道下的误码率和误比特率,并与理论值相比较。