matplotlib
1.线形图:plt.plot(参数)
X轴,Y轴坐标的数据格式可以是列表、数组和Series。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
# 创建数据
data = {
'name':['张三', '李四', '王五', '小明'],
'sex':['female', 'female', 'male', 'male'],
'math':[78, 79, 83, 92],
'city':['北京', '上海', '广州', '北京']
}
df = pd.DataFrame(data)
df
# X轴为行索引,Y轴为Series数据
plt.plot(df.index,df['math'])
- color参数指定线条的颜色
years = [1950, 1960, 1970, 1980, 1990, 2000, 2010]
gdp = [300.2, 543.3, 1075.9, 2862.5, 5979.6, 10289.7, 14958.3]
plt.plot(years,gdp,color='r')
# 也可以通过RGB指定
plt.plot(years,gdp,color='#FFA500')
- linestyle参数指定线条的形状
plt.plot(years,gdp,linestyle='--')
- linewidth参数指定线条的宽度
plt.plot(years,gdp,linestyle='--',linewidth=5)
- marker参数可以对坐标点进行标记
plt.plot(years,gdp,marker='.') # 小圆点
plt.plot(years,gdp,marker='D') # 方点
- 颜色、线条和点的样式可以一起放置于格式字符串中,但是颜色设置要放在线条和点的样式前面
plt.plot(years,gdp,'ro--')
2.柱状图
- (1)基础柱状图
-
bar函数:plot.bar(参数)
- color - 柱状图的填充色 - alpha - 透明度
# 需要传入刻度列表和高度列表
data = [23, 85, 72, 43, 52]
plt.bar([1,2,3,4,5],data)
# 设置颜色和透明度
plt.bar(range(len(data)),data,color='royalblue',alpha=0.7)
-
grid函数绘制格网:plt.grid(参数)
- color - 颜色 - linestyle - 线条形状 - linewidth - 线条宽度 - axis - 指定轴 - alpha - 透明度
plt.bar(range(len(data)),data,color='green',alpha=0.7)
# 绘制格网
plt.grid(color='#95a5a6',linestyle='--', linewidth=1,axis='y',alpha=0.6)
- (2)堆积柱状图
- bottom参数
- 设置柱状图的高度,即哪个数据作为柱状图底部
data1 = [23, 85, 72, 43, 52]
data2 = [42, 35, 21, 16, 9]
plt.bar(range(len(data)),data1)
plt.bar(range(len(data)),data2,bottom=data1) # data1垫底
- (3)并列柱状图
- width参数
- 设置柱状图的宽度
data1 = [23, 85, 72, 43, 52]
data2 = [42, 35, 21, 16, 9]
width = 0.3 # 设置柱状图宽度为0.3
plt.bar(np.arange(len(data1)),data1,width=width)
plt.bar(np.arange(len(data2))+width,data2,width=width)
- (4)水平柱状图
- barh函数
data1 = [23, 85, 72, 43, 52]
plt.barh(range(len(data1)),data1)
3.其他基本图表
- (1)散点图
- scatter函数
# 案列1
X = np.random.randn(100)
Y = np.random.randn(100)
plt.scatter(X,Y)
# 设置颜色、
plt.scatter(X,Y,color='red',marker='D')
# 案例2
"""python绘制散点图"""
from matplotlib import pyplot as plt
import numpy as np
train_x = np.linspace(-1, 1, 100)
train_y_1 = 2*train_x + np.random.rand(*train_x.shape)*0.3
train_y_2 = train_x**2+np.random.randn(*train_x.shape)*0.3
plt.scatter(train_x, train_y_1, c='red', marker='v' )
plt.scatter(train_x, train_y_2, c='blue', marker='o' )
plt.legend(["red","Blue"], loc="upper lift")
plt.show()
- (2)直方图
- hist函数
x = np.random.normal(size=100)
plt.hist(x,bins=30)
4.自定义设置
- (1)add_subplot()
- fig=plt.figure(figsize=(10,6))
fig = plt.figure(figsize=(10,6)) # 设置图表的长宽比
ax1 = fig.add_subplot(2,2,1) # 创建子图
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
years = [1950, 1960, 1970, 1980, 1990, 2000, 2010]
gdp = [300.2, 543.3, 1075.9, 2862.5, 5979.6, 10289.7, 14958.3]
ax1.scatter(years,gdp)
ax2.plot(years,gdp)
ax3.bar(years,gdp)
- (2)plt.subplots()
# 创建子图,返回图对象和子图坐标
years = [1950, 1960, 1970, 1980, 1990, 2000, 2010]
gdp = [300.2, 543.3, 1075.9, 2862.5, 5979.6, 10289.7, 14958.3]
fig,axes = plt.subplots(2,2,figsize=(10,6))
axes[0,1].plot(years,gdp)
补充:刻度与标签、图例
刻度与标签:
data = [23, 85, 72, 43, 52]
labels = ['A','B','C','D','E']
plt.xticks(range(len(data)),labels) #设置刻度和标签
plt.bar(range(len(data)),data)
data = [23, 85, 72, 43, 52]
labels = ['A','B','C','D','E']
plt.xticks(range(len(data)),labels) #设置刻度和标签
plt.xlabel('Class')
plt.ylabel('Amounts')
plt.title('Example1')
plt.bar(range(len(data)),data)
图例:
data1 = [23, 85, 72, 43, 52]
data2 = [42, 35, 21, 16, 9]
width = 0.3
plt.bar(np.arange(len(data1)),data1,width=width,label='one')
plt.bar(np.arange(len(data2))+width,data2,width=width,label='two') # 设置图例名称,one、two
plt.legend() # 绘制图例