Python 边缘之间的Matplotlib填充
我需要创建一个尽可能靠近此图片的绘图(给定以下生成的数据帧代码): 这是我的代码的输出图: 我遇到的问题是:Python 边缘之间的Matplotlib填充,python,matplotlib,Python,Matplotlib,我需要创建一个尽可能靠近此图片的绘图(给定以下生成的数据帧代码): 这是我的代码的输出图: 我遇到的问题是: 中间填充物的边缘不像图中那样锐利。我有一种白色的影子。如何更改填充之间的线以匹配目标图片 如何将图例颜色线对齐到中心,而不是像代码那样对齐到左边框 这是我的密码: import matplotlib.pyplot as plt import matplotlib.colors as colors import matplotlib.cm as cm import numpy as n
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cm as cm
import numpy as np
import pandas as pd
ncols = 10
figsize = (20, 5)
fontsize = 14
dti = pd.date_range('2013-01-01', '2020-12-31', freq='2W')
probabilities_in_time = np.random.random((ncols, len(dti)))
probabilities_in_time = probabilities_in_time / \
probabilities_in_time.sum(axis=0)
probabilities_in_time = pd.DataFrame(probabilities_in_time).T
probabilities_in_time.index = dti
cm_subsection = np.linspace(0, 1, ncols)
colors = [cm.coolwarm(x) for x in cm_subsection]
def plot_time_probabilities(probabilities_in_time, figsize):
plt.figure(figsize=figsize)
plt.yticks(np.arange(0, 1.2, 0.2), fontsize=fontsize)
plt.xticks(fontsize=fontsize)
draw_stack_plot(colors, probabilities_in_time)
set_grid()
set_legend()
plt.show()
def draw_stack_plot(colors, probabilities_in_time):
for i, color in enumerate(colors):
if i == 0:
plt.plot(probabilities_in_time[i], color=color)
plt.fill_between(probabilities_in_time.index,
probabilities_in_time[0], color=color)
else:
probabilities_in_time[i] += probabilities_in_time[i-1]
plt.fill_between(probabilities_in_time.index,
probabilities_in_time[i], probabilities_in_time[i-1],
color=color)
plt.plot(probabilities_in_time[i], label=' Probability: {}'.format(
i), color=color)
def set_grid():
ax = plt.gca()
ax.set_axisbelow(False)
ax.xaxis.grid(True, linestyle='-', lw=1)
def set_legend():
leg = plt.legend(loc='lower left', fontsize=14, handlelength=1.3)
for i in leg.legendHandles:
i.set_linewidth(12)
plot_time_probabilities(probabilities_in_time, figsize)
要在中间设置图例,可以设置,也可以将图例放置在外部。为避免图例控制柄变大,可以省去
。设置线宽(12)
(这将非常宽的边宽度设置为12点)
将颜色移动一个位置有助于更明显地显示填充边界。要保留正确的图例,应将标签添加到fill\u-between
下面的代码还试图简化部分调用:
导入matplotlib.pyplot作为plt
将matplotlib.cm导入为cm
将numpy作为np导入
作为pd进口熊猫
ncols=10
figsize=(20,5)
字体大小=14
dti=pd.日期范围('2013-01-01','2020-12-31',频率为'2W')
时间内的概率=np.random.random((ncols,len(dti)))
时间内的概率=时间内的概率/时间内的概率。总和(轴=0)
时间内的概率=pd.DataFrame(时间内的概率).T
概率时间指数=dti
cm_subsection=np.linspace(0,1,ncols)
颜色=厘米冷温(厘米)
def绘图时间概率(时间概率,figsize):
plt.图(figsize=figsize)
plt.yticks(np.arange(0,1.2,0.2),fontsize=fontsize)
plt.xticks(fontsize=fontsize)
绘制堆栈图(颜色、概率、时间)
设置网格()
set_图例()
#利润率(x=0,y=0)
利润率(x=0.02)
plt.紧_布局()
plt.show()
def绘制堆栈图(颜色、概率):
当前概率=0
对于i,枚举中的颜色(颜色):
plt.fill_between(时间索引中的概率),
时间内概率[i]+当前概率,当前概率,
颜色=颜色,标签=f'概率:{i}')
当前概率+=时间内概率[i]
plt.绘图(当前概率,
颜色=颜色[0]如果i=8种其他颜色[i-1]如果i<5种其他颜色[i+1])
def set_grid():
ax=plt.gca()
ax.set_axis低于(False)
ax.xaxis.grid(True,线型='-',lw=1)
def set_图例():
支腿=plt.图例(loc='左下方',fontsize=14,扶手长度=1.3)
#腿=plt.图例(loc='左上角',bbox_至_锚=(1.01,1),fontsize=14,手长=1.3)
#对于leg.legendHandles中的i:
#i.set_线宽(12)
绘制时间概率图(时间概率图,figsize)
嘿,很抱歉反应太晚了。图形图片输出与预期不完全相同,但还是要感谢您!