解决绘图中乱码问题
plt.rcParams['font.sans-serif']=['Simhei'] # 解决中文乱码问题
plt.rcParams['axes.unicode_minus']=False # 解决坐标轴刻度负号乱码
Pandas中的绘图类型
- Pandas通过标准约定来引用matplotlib API来实现更便捷的绘图方法。pandas的Series和DataFrame都自带绘图方法
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rc('figure', figsize=(8, 4)) # 设置图片大小,单位为英寸
线图line
Series作图
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2018', periods=1000))
ts = ts.cumsum()
ts.head()
生成的Series如下:
2018-01-01 -0.218622
2018-01-02 0.800360
2018-01-03 1.032471
2018-01-04 0.770278
2018-01-05 -0.754439
Freq: D, dtype: float64
plt.figure(figsize=(8,4))
ts.plot();
- 图表的横坐标是双坐标
Series画图的参数说明
参数 | 说明 |
---|---|
kind | 可以使‘line’线图(默认);’bar’垂直柱状图; ’barh’水平柱状; 'hist’直方图; 'box’箱线图; 'kde’或者’desity’密度图; 'area’区域图; 'scatter’散点图;‘hexbin’六角形图; pie’饼图 |
figsize | 元组形式表示图的大小,单位为英寸 |
use_index | 是否用索引作x轴,默认为True |
title | 标题 |
grid | 是否显示网格,默认为None |
legend | 是否显示图例,False/True/‘reverse’ |
label | 用于图例的标签 |
ax | Subplot对象,默认为当前对象 |
style | 传给matlibplot的风格字符串,如’ko–’;list或dict的形式表示每列的style |
alpha | 图表的填充不透明度(0-1之间) |
xtick | X轴刻度值 |
xlim | X轴界线,如[0,100] |
- s.plot(kind=‘line’) 等价于 s.plot.line()
- s.plot(kind=‘bar’) 等价于 s.plot.bar()
- s.plot(kind=‘hist’) 等价于 s.plot.hist()
- …
ts.plot.line() # 图形与上图一样
DataFrame 作图
df = pd.DataFrame(np.random.randn(100, 4).cumsum(0), columns=list('ABCD'), index=np.arange(0, 100, 1))
df.head()
生成的DaraFrame如下:
A B C D
0 0.408464 0.122632 1.285822 -0.074799
1 0.174366 -0.839241 0.791051 1.290122
2 -0.365918 -1.897591 -0.687835 0.081802
3 1.696604 -1.908418 -1.002529 -0.308029
4 2.693575 -2.039872 -1.726345 0.863233
df.plot();
DataFrame画图及其参数说明
DataFrame还有一些用于对列进行灵活处理的选项,例如,要将所有列都绘制到一个subplot中还是创建各自的subplot。参数如下表:
参数 | 说明 |
---|---|
subplots | 将各个DataFrame列绘制到单独的subplot中 |
sharex | 如果subplots=True,则共用同一个X轴,包括刻度和界限 |
sharey | 类似于上 |
figsize | 表示图像大小的元组 |
title | 表示图像标题的字符串 |
legend | 添加一个subplot图例(默认为True) |
sort_columns | 以字母表顺序绘制各列,默认使用前列顺序 |
df.plot(subplots=True,
# layout = (2,3),
figsize = (12,6),
# sharex = False
);