import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
交互式图例
import mpld3
from mpld3 import plugins
np.random.seed(100)
df = pd.DataFrame({'A': np.random.randn(365).cumsum(0),
'B': np.random.randn(365).cumsum(0) + 20,
'C': np.random.randn(365).cumsum(0) - 20},
index=range(365))
print(df.head())
print(df.columns.values)
fig, ax = plt.subplots(figsize=(12, 8))
labels = df.columns.tolist()
lines = ax.plot(df.index.values, df.values, lw=2)
interactive_legend = plugins.InteractiveLegendPlugin(lines, labels)
plugins.connect(fig, interactive_legend)
mpld3.display()
# 图像保存成html
with open('./interactive_legend_eg.html', 'w') as f:
mpld3.save_html(fig, f)
pyecharts
柱状图交互式图例
from pyecharts import Bar
comp_df = pd.read_csv('./comparison_result.csv', index_col='state')
comp_df
good_state_results = comp_df.iloc[0, :].values
heavy_state_results = comp_df.iloc[1, :].values
light_state_results = comp_df.iloc[2, :].values
medium_state_results = comp_df.iloc[3, :].values
labels = comp_df.index.values.tolist()
city_names = comp_df.columns.tolist()
bar = Bar("堆叠柱状图")
bar.add('良好', city_names, good_state_results, is_stack=True, xaxis_interval=0, xaxis_rotate=30)
bar.add('轻度污染', city_names, light_state_results, is_stack=True, xaxis_interval=0, xaxis_rotate=30)
bar.add('中度污染', city_names, medium_state_results, is_stack=True, xaxis_interval=0, xaxis_rotate=30)
bar.add('重度污染', city_names, heavy_state_results, is_stack=True, xaxis_interval=0, xaxis_rotate=30)
bar
plt.show()
# 保存结果到html
bar.render('./echarts_demo.html')