matplotlib——折线图,散点图,柱状图,饼状图

1.折线图——plot函数绘图

plot函数

matplotlib.pyplot.plot(*args,**kwargs)

参数名称 说明
x,y 接收array。表示x轴和y轴对应的数据。无默认。
color 接收特定string。指定线条的颜色。默认为None。
linestyle 接收特定string。指定线条类型。默认为“-”。
marker 接收特定string。指定线条类型。默认为“-”。
alpha 接收0-1的小数。表示点的透明度。默认为None。
import matplotlib.pyplot as plt
import numpy as np

###加载数据
data = np.load('./国民经济核算季度数据.npz')
print(data)

for tmp in data:
    print(tmp)

columns = data['columns']
values = data['values']
print(columns)
print(values)

### 创建画布

plt.figure(figsize=(20,10),dpi=80)

### 准备数据

x = values[:,0]
y1 = values[:,3]
y2 = values[:,4]
y3 = values[:,5]

###绘制图形

plt.plot(x, y1, color='#0000FF', linestyle='-', linewidth=1.2, marker="*", markersize=7, markerfacecolor='b',markeredgecolor='g')

plt.plot(x, y2, color='#800000', linestyle='-', linewidth=1.2, marker="1", markersize=7, markerfacecolor='k',markeredgecolor='k')

plt.plot(x, y3, color='#FFD700', linestyle='--', linewidth=1.2, marker=".", markersize=7, markerfacecolor='b',markeredgecolor='g')

### 增加修饰

##默认不支持中文,想用中文,必须进行设置RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
##默认不支持负号,想用负号,进行RC参数设置
plt.rcParams['axes.unicode_minus'] = False

##添加标题
plt.title('2000~2017年各产业季度生产总值')

##添加x,y轴标签
plt.xlabel('时间')
plt.ylabel('各产业生产总值(亿元)')

x_label = values[:, 1]
##x刻度设置
plt.xticks(x[::4], x_label[::4], rotation=45)

##增加图例----loc参数可以设置图例位置
plt.legend(['第一产业', '第二产业', '第三产业'])

##网格线-----axis的值必须是字符串
plt.grid(b=True, axis='y')

##保存图片
plt.savefig('./各产业季度生产总值.png')

###展示图形
plt.show()

2

2.散点图——scatter函数绘图

scatter函数

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, alpha=None,**kwargs)

常用参数:

扫描二维码关注公众号,回复: 6646440 查看本文章
参数名称 说明
x,y 接收array。表示x轴和y轴对应的数据。无默认。
s 接收数值或者一维的array。指定点的大小,若传入一维array则表示每个点的大小。默
认为None。
c 接收颜色或者一维的array。指定点的颜色,若传入一维array则表示每个点的颜色。默
认为None
marker 接收特定string。表示绘制的点的类型。默认为None。
alpha 接收0-1的小数。表示点的透明度。默认为None。
import matplotlib.pyplot as plt
import numpy as np


data = np.load('./国民经济核算季度数据.npz')
print(data)
for tmp in data:
    print(tmp)
columns = data['columns']
values = data['values']

###一个画布里面绘制多个图形
###增加子图

## 创建画布,返回画布对象
fig = plt.figure(figsize=(20,10),dpi=100)

##给画布对象增加子图
#参数1,2表示增加的子图为几行几列,参数3表示第几个图
fig.add_subplot(2,1,1)
###########################################################################
x = values[:, 0]
y1 = values[:, 3]
y2 = values[:, 4]
y3 = values[:, 5]

###绘图------散点图必须为一个x对应一个y

plt.scatter(x, y1,marker='*')
plt.scatter(x, y2,marker='s')
plt.scatter(x, y3,marker='x')
# plt.tight_layout(pad=40,h_pad=10)


### 增加修饰
##默认不支持中文,想用中文,必须进行设置RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
##默认不支持负号,想用负号,进行RC参数设置
plt.rcParams['axes.unicode_minus'] = False

plt.title('各季度生产总值散点图')

plt.xlabel('日期')

plt.ylabel('生产总值(亿元)')

plt.legend(["第一产业","第二产业","第三产业"])

x_label = values[:, 1]

##x刻度设置
plt.xticks(x[::4], x_label[::4], rotation=45)




fig.add_subplot(2,1,2)
# plt.subplot(222,frameon=True)    #frameon  是否设置外边框
#准备数据
x = values[:,1]
y1 = values[:,6]
y2 = values[:,7]
y3 = values[:,8]
y4 = values[:,9]
y5 = values[:,10]
y6 = values[:,11]
y7 = values[:,12]
y8 = values[:,13]
y9 = values[:,14]


plt.scatter(x,y1,marker='1')
plt.scatter(x,y2,marker='2')
plt.scatter(x,y3,marker='3')
plt.scatter(x,y4,marker='4')
plt.scatter(x,y5,marker='h')
plt.scatter(x,y6,marker='s')
plt.scatter(x,y7,marker='x')
plt.scatter(x,y8,marker='p')
plt.scatter(x,y9,marker='d')

##默认不支持中文,想用中文,必须进行设置RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
##默认不支持负号,想用负号,进行RC参数设置
plt.rcParams['axes.unicode_minus'] = False

plt.title('各行业生产总值散点图')

plt.xlabel('日期')

plt.ylabel('各行业生产总值(亿元)')

x_label = values[:, 1]

##x刻度设置
plt.xticks(x[::4], x_label[::4], rotation=45)

plt.legend(["农林业", "工业", "建筑业", "批发业", "交通业", "餐饮业", "金融业", "房地产业", "其他"])

plt.savefig('各行业生产总值.png')

fig.show()

3.柱状图——bar函数绘图

bar函数

matplotlib.pyplot.bar(left,height,width = 0.8,bottom = None,hold = None,data = None,** kwargs

参数名称 说明
left 接收array。表示x轴数据。无默认。
height 接收array。表示x轴所代表数据的数量。无默认。
width 接收0-1之间的float。指定直方图宽度。默认为0.8。
color 接收特定string或者包含颜色字符串的array。表示直方图颜色。默认为None。
import matplotlib.pyplot as plt
import numpy as np

data = np.load('./国民经济核算季度数据.npz')
print(data)

for tmp in data:
    print(tmp)

columns = data['columns']
values = data['values']
print('columns', columns)
print('values', values)

##创建画布
fig = plt.figure(figsize=(20,10))


###调整子图之间的间距
plt.subplots_adjust(hspace=0.5, wspace=0.5)

##增加子图
fig.add_subplot(2, 2, 1)
x = [1, 2, 3]
y = values[0, 3:6]

##绘图

plt.bar(x, y, width=0.6, color=['r', 'g', 'b'])



###修饰
##默认不支持中文,想用中文,必须进行设置RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
##默认不支持负号,想用负号,进行RC参数设置
plt.rcParams['axes.unicode_minus'] = False


plt.title("2000各产业生产总值")
plt.xlabel("产业")
plt.ylabel("生产总值(亿元)")
x_label = ["第一产业", "第二产业", "第三产业"]
plt.xticks(x, x_label)

###添加值
for i, j in zip(x, y):
    plt.text(i-0.06, j + 0.11, '%d' % j)

plt.grid(b=True, axis='y')

fig.add_subplot(2, 2, 2)
x = [1, 2, 3]
y = values[-4, 3:6]
plt.bar(x, y, width=0.6, color=['r', 'g', 'b'])

###修饰
##默认不支持中文,想用中文,必须进行设置RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
##默认不支持负号,想用负号,进行RC参数设置
plt.rcParams['axes.unicode_minus'] = False

###添加标题
plt.title("2017各产业生产总值")

##定义x轴
plt.xlabel("产业")

##定义y轴
plt.ylabel("生产总值(亿元)")

##替换x轴刻度
x_label = ["第一产业", "第二产业", "第三产业"]
plt.xticks(x, x_label)

###添加值
for i, j in zip(x, y):
    plt.text(i-0.06, j + 0.5, '%d' % j)

###增加网格线
plt.grid(b=True, axis='y')


fig.add_subplot(2, 2, 3)

x = np.arange(1, 10)
y = values[0, 6:]
##默认不支持中文,想用中文,必须进行设置RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
##默认不支持负号,想用负号,进行RC参数设置
plt.rcParams['axes.unicode_minus'] = False
###绘图
plt.bar(x, y, color=["blue", "green", "red", "yellow", "magenta", "brown", "cyan", "khaki", "navy"])
plt.title('2000年第一季度各行业生产总值')
plt.xlabel('行业')
plt.ylabel('生产总值(亿元)')
x_label = ["农林业", "工业", "建筑业", "批发业", "交通业", "餐饮业", "金融业", "房地产业", "其他"]
plt.xticks(x, x_label)

for i, j in zip(x, y):
    plt.text(i - 0.13, j + 0.11, '%d' % j)

plt.grid(b=True, axis='y')

fig.add_subplot(2, 2, 4)
x = np.arange(1, 10)
y = values[-4, 6:]
##默认不支持中文,想用中文,必须进行设置RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
##默认不支持负号,想用负号,进行RC参数设置
plt.rcParams['axes.unicode_minus'] = False
###绘图
plt.bar(x, y, color=["blue", "green", "red", "yellow", "magenta", "brown", "cyan", "khaki", "navy"])
plt.title('2017年第一季度各行业生产总值')
plt.xlabel('行业')
plt.ylabel('生产总值(亿元)')
x_label = ["农林业", "工业", "建筑业", "批发业", "交通业", "餐饮业", "金融业", "房地产业", "其他"]
plt.xticks(x, x_label)

for i, j in zip(x, y):
    plt.text(i - 0.13, j + 0.11, '%d' % j)

plt.grid(b=True, axis='y')

fig.show()

4.饼状图——pie函数绘图

pie函数

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None,pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, … )

常用参数:

参数名称 说明 参数名称 说明
x 接收array。表示用于绘制撇的数据。
无默认。
autopct 接收特定string。指定数值的显示方式。默
认为None。
explode 接收array。表示指定项离饼图圆心为n
个半径。默认为None。
pctdistance 接收float。指定每一项的比例和距离饼图
圆心n个半径。默认为0.6。
labels 接收array。指定每一项的名称。默认
为None。
labeldistance 接收float。指定每一项的名称和距离饼图
圆心多少个半径。默认为1.1。
color 接收特定string或者包含颜色字符串的
array。表示饼图颜色。默认为None。
radius 接收float。表示饼图的半径。默认为1。
import matplotlib.pyplot as plt
import numpy as np

data = np.load('./国民经济核算季度数据.npz')
for tmp in data:
    print(tmp)

columns = data["columns"]
values = data["values"]
print(columns)
print(values)

###创建画布
fig = plt.figure(figsize=(20, 10))

##默认不支持中文,想用中文,必须进行设置RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
##默认不支持负号,想用负号,进行RC参数设置
plt.rcParams['axes.unicode_minus'] = False


##创建子画布
fig.add_subplot(2, 2, 1)
x = values[0, 3:6]

##离心半径
explode = (0.01, 0.01, 0.01)
label = ["第一产业", "第二产业", "第三产业"]

###绘图------shadow增加阴影,labels 增加标签  autopct  占比
plt.pie(x, explode=explode, labels=label, autopct="%.1f%%")

##椭圆变成圆形
plt.axis('equal')


fig.add_subplot(2, 2, 2)
x = values[-4, 3:6]
explode = (0.01, 0.01, 0.01)
label = ["第一产业", "第二产业", "第三产业"]
plt.pie(x, explode=explode, labels=label, autopct="%.1f%%")

plt.axis("equal")


fig.add_subplot(2, 2, 3)
x = values[0, 6::]
label = ["农林业", "工业", "建筑业", "批发业", "交通业", "餐饮业", "金融业", "房地产业", "其他"]

plt.pie(x, labels=label, autopct="%.1f%%")
plt.axis("equal")


fig.add_subplot(2, 2, 4)
x = values[-4, 6::]
label = ["农林业", "工业", "建筑业", "批发业", "交通业", "餐饮业", "金融业", "房地产业", "其他"]
plt.pie(x, labels=label, autopct="%.1f%%")
plt.axis("equal")

## 保存
fig.savefig('饼图案例.png')

##展示
fig.show()

猜你喜欢

转载自blog.csdn.net/weixin_43567965/article/details/92710293