1. 图片基本设置
import matplotlib.pyplot as plt
plt.figure(width, height)
plt.rcParams['figure.figuresize'] = (width, height)
plt.xlabel('labelname', fontsize=10)
plt.xticks([0,1], ['a', 'b'], size=8)
plt.xlabel('')
plt.xticks([])
plt.yscale('log')
ax = plt.gca()
fig, ax = plt.figure()
plt.legend(fontsize=6, loc=['upper right'])
plt.text(x=1, y=1, s='some text', size=20)
plt.tight_layout()
plt.savefig('figure1.pdf')
plt.show()
2. pandas 基础操作
import pandas as pd
data = pd.read_csv('xx.csv')
print(data.head())
data1 = data.copy()
d = {'a': 1, 'b': 2, 'c': 3}
ser = pd.Series(data=d, index=['a', 'b', 'c'])
print(ser)
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
print(df)
row1 = data[0]
row1 = data[0:1]
row1 = data.loc[0]
row1 = data.loc[[0]]
col1 = data.loc[:, 'column1']
row1 = data.iloc[0]
items = data.iloc[0, 0]
rows = data[(data['gender'] == 'Woman') & (data['age'] < 22)]
rows = data[lambda x : x['gender'] == 'Woman']
data.loc[data['gender'] == 'Woman', 'gender'] = 'girl'
data.rename({0:'1st'}, axis=0, inplace=True)
data.rename({'gender':'Genger'}, axis=1, inplace=True)
data = pd.concat([data0, data1], axis=0)
print(data.dtypes)
print(data.columns)
data['new column'] = 1
data[data['gender'] == 'Woman', 'new column'] = 1
array = data.values
index_array = data.index.values
column_array = data.columns.values
list = data.values.tolist()
data_ctx = data_ctx.sort_values(by=['gasFee'])
data_itx = data_itx.groupby('gasFee').mean()
3. 折线图
lineType = [':s', '-x', '-^', '->', '--o']
plt.plot(x, y, lineType[i], markerfacecolor='none', label=methods[i], markersize=10, color=colors[i])
4. 散点图
colors = ['tab:blue', 'tab:orange', ...]
plt.scatter(data_ctx['gasFee'], data_ctx['queueing_time'], marker=markers[i], edgecolors=colors[i], color='none', label=methods[i] + ', CTX\'s plot', s=marker_size[i])
5. 柱状图
plt.bar(x=[0,1], height=[2,4], width=0.5, color='lab:blue', label='label name')
plt.bar(x, height1, bottom=0)
plt.bar(x, height2, bottom=height1)
hacthes = ['\\', 'x', '/', '+', '.']
plt.bar(i, ratio, hatch=hacthes[i], label=methods[i])
6. 直方图
plt.hist(x=[0,1,2,2,3,...], bins=100, width=0.5, color='blue')
plt.hist([data_0['queueing_time'].array, data_1['queueing_time'].array], bins=20, label=['Cross-shard TXs', 'Intra-shard TXs'], color=[color1, color2])
7. 箱线图
import seaborn as sns
sns.boxplot(x='column1', y='column2', data=data, palette=[color1,color2], width=0.5)
sns.boxplot(x=[], y=[], palette=[color1,color2],width=0.5)
sns.boxplot(x='column1', y='column2', hue='column3', data=data, ...)
8. 绘制子图
plt.figure(figsize=(width, height))
plt.subplot(131)
plt.plot(...)
plt.subplot(132)
plt.plot(...)
plt.subplot(233)
plt.plot(...)
plt.tight_layout()
plt.show()
import matplotlib.gridspec as gridspec
plt.figure(figsize=(width, height))
gs = gridspec.GridSpec(30, 30)
plt.subplot(gs[:9, :5])
plt.plot(...)
plt.subplot(gs[10:20, 6:13])
plt.plot(...)
plt.tight_layout()
plt.show()
9. cdf图
(pip install statsmodels)
from statsmodels.distributions.empirical_distribution import ECDF
data = pd.read_csv(v + 'unionctx.csv')
data = data.loc[:, 'queueing_time']
ecdf = ECDF(data)
data_min = min(data)
data_max = max(data)
x = np.linspace(data_min, data_max, number[i])
x = list(x)
y = ecdf(x)
plt.plot(x, y, lineType[i], markerfacecolor='none', label=methods[i], markersize=10, color=colors[i])
10. 图中图
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
plt.figure(figsize=(5,3))
......
plt.hist([data[0], data[1], data[2]], bins=10, label=methods)
ax = plt.gca()
axins = inset_axes(ax, width="60%", height="40%", loc='lower left', bbox_to_anchor=(0.36, 0.1, 1, 1), bbox_transform=ax.transAxes)
axins.hist([data[0], data[1], data[2]], bins=10, label=methods)
axins.set_xlim(20,64)
axins.set_ylim(0,1000)
plt.tight_layout()
plt.show()