目录
一、问题描述
写论文时,需要将条形图与折线图画在一起,有时候他们共用同一个纵坐标、有时是分开的。这两种情况分别如何处理?
二、共用纵坐标的情况
代码:
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
#显示中文
from pylab import *
mpl.rcParams['font.sans-serif']=['SimHei']
# 生成数据
'''
y = []
for i in range(200):
yi = np.random.uniform(0, 1)
yi = format(yi, '.3f')
y.append(yi)
y = np.array(y)
'''
'''生成数据'''
y = np.random.randint(1, 100, size=200)
y1 = y * 0.1
x = np.array(range(200))
'''第一张条形图'''
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.bar(x, y, 0.6, label='close', color='royalblue')
ax1.set_xlabel('number') #x轴标签
ax1.set_ylabel('损失负荷占比') #y轴标签
ax1.set_title('损失负荷占比图') #标题
#把y轴的主刻度设置为10的倍数
ax1.set_xlim(0, 200)
#把x轴的刻度范围设置为-0.5到11,因为0.5不满一个刻度间隔,所以数字不会显示出来,但是能看到一点空白
ax1.set_ylim(0, 120)
#把y轴的刻度范围设置为-5到110,同理,-5不会标出来,但是能看到一点空白
x_major_locator=MultipleLocator(50)
#把x轴的刻度间隔设置为1,并存在变量里
y_major_locator=MultipleLocator(20)
#把y轴的刻度间隔设置为10,并存在变量里
ax=plt.gca()
#ax为两条坐标轴的实例
ax.xaxis.set_major_locator(x_major_locator)
#把x轴的主刻度设置为1的倍数
ax.yaxis.set_major_locator(y_major_locator)
'''第二章折线图'''
#ax2 = ax1.twinx() #有两个坐标轴
ax2 = ax1 #共用一个坐标轴
ax2.plot(x, y1, linewidth=0.6, color='lightcoral')
ax2.scatter(x, y1, s=1.0, color='red')
plt.show()
注意:
这一步其实没有必要再有一个ax2,直接用一个ax1即可。
结果:
三、各自坐标轴的情况
代码:
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
#显示中文
from pylab import *
mpl.rcParams['font.sans-serif']=['SimHei']
# 生成数据
'''
y = []
for i in range(200):
yi = np.random.uniform(0, 1)
yi = format(yi, '.3f')
y.append(yi)
y = np.array(y)
'''
'''生成数据'''
y = np.random.randint(1, 100, size=200)
y1 = y * 0.1
x = np.array(range(200))
'''第一张条形图'''
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.bar(x, y, 0.6, label='close', color='royalblue')
ax1.set_xlabel('number') #x轴标签
ax1.set_ylabel('损失负荷占比') #y轴标签
ax1.set_title('损失负荷占比图') #标题
#把y轴的主刻度设置为10的倍数
ax1.set_xlim(0, 200)
#把x轴的刻度范围设置为-0.5到11,因为0.5不满一个刻度间隔,所以数字不会显示出来,但是能看到一点空白
ax1.set_ylim(0, 120)
#把y轴的刻度范围设置为-5到110,同理,-5不会标出来,但是能看到一点空白
x_major_locator=MultipleLocator(50)
#把x轴的刻度间隔设置为1,并存在变量里
y_major_locator=MultipleLocator(20)
#把y轴的刻度间隔设置为10,并存在变量里
ax=plt.gca()
#ax为两条坐标轴的实例
ax.xaxis.set_major_locator(x_major_locator)
#把x轴的主刻度设置为1的倍数
ax.yaxis.set_major_locator(y_major_locator)
'''第二章折线图'''
ax2 = ax1.twinx() #有两个坐标轴
#ax2 = ax1 #共用一个坐标轴
ax2.plot(x, y1, linewidth=0.6, color='lightcoral')
ax2.scatter(x, y1, s=1.0, color='red')
plt.show()
结果:
注意:
两种情况的区别在这里:
具体用哪种,要因情况而定
四、延申——各种颜色的设置
1. 线条颜色
2. 折线线形
‘-’ :实线
‘-.’ :实虚线
‘–’:虚线
‘:’ :点虚线
3. 数据点形状
‘s’ : 方块状
‘o’ : 实心圆
‘^’ : 正三角形
‘v’ : 反正三角形
‘+’ : 加号
‘*’ : 星号
‘,’:点
‘x’ : x号
‘p’ : 五角星
‘1’ : 三脚架标记
‘2’ : 三脚架标记