Вставные участки с простыми точками - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь добавить врезку для линий Holding_cost и Backlogging_cost на приведенном ниже графике. Когда я искал вложенные графики, я вижу, что во многих примерах используются вложенные графики с определениями (ax, figure). Поскольку у меня есть какой-то конкретный код для plt., я не хочу переносить эту цифру в версию для сюжета. Есть ли решение для встраивания графика врезки в этих обстоятельствах?

from matplotlib import rc
import matplotlib.pyplot as plt
from labellines import labelLine, labelLines
rc('text', usetex=True)
plt.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}",r"\usepackage[mathscr]{euscript}"]
plt.figure(figsize=(8, 8))

plt.plot(range(ksize),Cost_sum, '-k', label = 'Total',linewidth=3)
plt.plot(range(ksize),Build_cost, '-',c='seagreen', label = 'Build',linewidth=3)
plt.plot(range(ksize),Downtime_cost, '-', c='indigo', label = 'Downtime',linewidth=3)
plt.plot(range(ksize),Purchasing_cost, '-', c='crimson', label = 'Purchasing',linewidth=3)
plt.plot(range(ksize),Holding_cost, '-', c='orange', label = 'Holding',linewidth=3)
plt.plot(range(ksize),Backlogging_cost, '-', c='turquoise', label = 'Backlogging',linewidth=3)

plt.plot([k],[min(Cost_sum)], 'k', marker='*',  mfc='none', markersize=14)

plt.text(k*0.98, min(Cost_sum)*1.04, r'$k^*$')

plt.xticks(list(plt.xticks()[0]) + [k])

lines = plt.gca().get_lines()
labelLine(lines[4],11,label='{}'.format(lines[4].get_label()),align = False,fontsize=16,zorder=2.5,va='bottom')
labelLine(lines[0],15,label='{}'.format(lines[0].get_label()),align = False,fontsize=16,zorder=2.5)
labelLine(lines[1],15,label='{}'.format(lines[1].get_label()),align = False,fontsize=16,zorder=2.5)
labelLine(lines[2],15,label='{}'.format(lines[2].get_label()),align = False,fontsize=16,zorder=2.5)
labelLine(lines[3],13,label='{}'.format(lines[3].get_label()),align = False,fontsize=16,zorder=2.5)

labelLines([lines[i] for i in range(len(lines)) 
            if i not in [0,1,2,3,4]],zorder=2.5,align=False,fontsize=16,xvals=(15, 20),va='top')


plt.plot([k,k],[-max(Cost_sum)*0.05,min(Cost_sum)], '--k', dashes=(8, 6))


plt.ticklabel_format(style='sci', axis='y', scilimits=(0,0))
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.rc('font', size=20)
plt.xlim(left=-1,right=ksize*1.01)
plt.ylim(bottom = -max(Cost_sum)*0.05, top = max(Cost_sum)*1.05)
plt.xlabel(r'$k$', fontsize=20)
plt.ylabel('Annual Sourcing Cost (\$)', fontsize=20)
plt.show()

Вот данные для воспроизведения прилагаемого рисунка.

(k,ksize,Cost_sum,Build_cost,Downtime_cost,Purchasing_cost,Holding_cost,Backlogging_cost) = (5, 21, [4566185.84958104, 3851831.0572200846, 3565535.616370524, 3395959.546010131, 3335310.1252832105, 3329129.801671144, 3348670.023232867, 3396492.9660517015, 3466368.5698340936, 3554060.0211574556, 3651792.419066521, 3758257.621291115, 3869866.130740931, 3985036.500754009, 4102434.354938996, 4221042.0030950345, 4340432.879293293, 4460167.615843281, 4580058.451828075, 4700015.099763582, 4819998.516231451], [0, 177222.2678574566, 358430.74126313033, 498693.32509609073, 625885.403095768, 746604.6981917183, 873034.7125363777, 975063.4720472957, 1049769.8471082426, 1145978.9429791428, 1199143.42108458, 1240852.8140335542, 1269882.4509229255, 1287853.138858912, 1308162.0194890695, 1311076.0940421396, 1312594.5371365794, 1312594.537136579, 1312594.537136579, 1312594.5371365792, 1312594.537136579], [0, 141129.06486431422, 198208.5540829755, 222573.40844582563, 259146.4212700642, 287560.0302637707, 320215.10890425567, 349656.43658995605, 368483.16599147196, 395395.4583382164, 410688.11784972803, 419781.9418066965, 432130.2205095227, 444005.25280786975, 451695.2201472967, 454782.15603979095, 456688.3693602677, 456423.1059102573, 456313.94189504976, 456270.5898305575, 456254.00629842596], [4541171.853867372, 3388943.963490517, 2745797.4942291463, 2296277.8906481406, 1953109.7381211254, 1678321.807949813, 1420580.3170326485, 1217326.2795553817, 1074452.1288599337, 919861.1429883543, 829741.2108432015, 765975.1717142115, 716516.4480671097, 682606.0612729619, 652138.545832702, 644789.7371737638, 640812.2765522903, 640812.2765522903, 640812.2765522903, 640812.2765522903, 640812.2765522903], [22393.016948892902, 21960.667293075123, 20795.12848139708, 16300.577174067963, 15257.966173544293, 14798.161857120422, 13090.785835092029, 12744.159873509096, 12026.756694177322, 11342.598968663648, 10753.439568233127, 10274.278741187029, 10018.226634046483, 9465.36734027374, 9350.039444208951, 9312.956511300557, 9259.41257276402, 9259.41257276402, 9259.41257276402, 9259.41257276402, 9259.41257276402], [2620.9787647758053, 2575.0937147202317, 2303.69831387141, 2114.3446460037326, 1910.5966227084793, 1845.1034087196194, 1749.098924491782, 1702.6179855582488, 1636.671180267143, 1481.8778830783633, 1466.2297207771976, 1373.4149954678835, 1318.7846073251453, 1106.6804739931142, 1088.530025718579, 1081.0593280402318, 1078.2836713916126, 1078.2836713916126, 1078.2836713916126, 1078.2836713916126, 1078.2836713916126])

enter image description here

...