Кажется, с вашим кодом довольно много проблем.Ниже приведена моя отредактированная версия, которая должна приблизить сюжет к тому, что вы публикуете в своем вопросе.Я предполагаю, что самой большой проблемой были противоречивые ylim
аргументы в командах заговора и отсутствующий индекс в «данных» Dataframe.Обратите внимание, что fontsize=40
значительно увеличивает размер текста, поэтому я закомментировал его.Если это все равно желательно, попробуйте поэкспериментировать оттуда.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
import seaborn as sns
import matplotlib.ticker as ticker
fig, ax = plt.subplots()
plt.style.use('ggplot')
data = pd.DataFrame(index=[2001, 2002, 2003, 2004, 2005], data=[[1, 0.0, 10],[87, 32, 161],[821, 271, 804],[246, 922, 819],[107, 785, 1697]], columns=['A', 'B', 'C'])
data_cost = pd.DataFrame(index=[2001, 2002, 2003, 2004, 2005], data=[[4],[311],[671],[862], [593]], columns=['D'])
my_cmap = ListedColormap(sns.color_palette("GnBu_d", 3).as_hex())
##ax = data.plot(colormap=my_cmap, alpha=0.8, rot=0, xticks=data.index,
## linewidth=6,
## #ylim=(-0.5, 20),
## ax=ax)
ax = data.plot(colormap=my_cmap, rot=0, xticks=data.index,
marker='s', ms=15, linewidth=6,
#ylim=(-0.5, 13),
ax=ax
)
ax = data_cost.plot(color='r', rot=0, xticks=data_cost.index,
linewidth=6,
#ylim=(1000, 5000),
marker='s', ms=15, ax=ax)
ax.set_ylabel('I')#, fontsize=40)
ax.xaxis.set_tick_params()#labelsize=40)
ax.set_xlabel('Y')#, fontsize=40)
ax.yaxis.set_tick_params()#labelsize=40)
box = ax.get_position()
ax.set_position([box.x0, box.y0, box.width * 0.8, box.height])
ax.legend(
loc='center left', bbox_to_anchor=(1, 0.5),
#fontsize=40,
prop={'size':32})
ax.set_facecolor('none')
#plt.show()
fig.savefig('example.png', bbox_inches='tight')
Окончательная цифра выглядит так:
