一些设置
import seaborn as sns
import matplotlib. pyplot as plt
import pandas as pd
import numpy as np
% matplotlib inline
plt. rcParams[ 'font.sans-serif' ] = [ 'SimHei' ]
plt. rcParams[ 'axes.unicode_minus' ] = False
sns. set ( font= 'SimHei' , font_scale= 1.2 )
单簇柱形图+折线图
data = pd. read_excel( 'figures.xlsx' )
fig, ax1 = plt. subplots( )
b1 = ax1. bar( np. arange( len ( data) ) , data[ '童话篇数' ] , width= width, label= '童话篇数' , color = sns. xkcd_rgb[ "pale red" ] )
plt. legend( bbox_to_anchor= ( 0.96 , 1.02 ) )
ax2 = ax1. twinx( )
b2 = ax2. plot( np. arange( len ( data) ) , data[ '童话篇目占比' ] , label= '童话篇目占比' , color = sns. xkcd_rgb[ "denim blue" ] , marker= '*' )
ax1. set_ylabel( '童话篇数' , fontsize= 12 )
ax2. set_ylabel( '童话篇目占比' , fontsize= 12 )
ax1. set_ylim( 0 , 20 )
ax2. set_ylim( 0 , 0.4 )
ticks = ax1. set_xticks( np. arange( len ( data) ) )
labels = ax1. set_xticklabels( list ( data[ '年级' ] ) )
labels2 = ax2. set_yticklabels( [ val+ '%' for val in np. arange( 0 , 41 , 5 ) . astype( 'str' ) ] )
plt. legend( bbox_to_anchor= ( 0.58 , 0.9 ) )
x_bias = 0.08
y_bias = 0.4
for i in range ( len ( data) ) :
ax1. text( i- x_bias, data[ '童话篇数' ] [ i] + y_bias, data[ '童话篇数' ] . astype( 'str' ) [ i] )
plt. grid( 'off' )
plt. savefig( 'test1.png' , dpi= 400 , bbox_inches = 'tight' )
多簇条形图
data = pd. read_excel( 'figures.xlsx' , sheet_name= 'Sheet3' )
data. plot. bar( width= 0.75 )
plt. ylim( 0 , 20 )
plt. xticks( np. arange( 5 ) , list ( data. index) , rotation= 0 )
plt. savefig( 'fig1.png' , dpi= 400 )
plt. ylabel( '个数' , fontsize= 12 )
plt. grid( 'off' )
plt. savefig( 'test1.png' , dpi= 400 , bbox_inches = 'tight' )
多簇柱形图+折线图
data = pd. read_excel( 'figures.xlsx' , sheet_name= 'Sheet4' )
data. plot. bar( width= 0.75 )
avg_data. plot. line( marker= '*' , color= 'r' )
plt. ylim( 0 , 3000 )
plt. xticks( np. arange( 5 ) , list ( data. index) , rotation= 0 )
plt. savefig( 'fig1.png' , dpi= 400 )
plt. ylabel( '字数' , fontsize= 12 )
plt. legend( )
plt. savefig( 'test1.png' , dpi= 400 , bbox_inches = 'tight' )
堆积柱形图+折线图
data = pd. read_excel( 'figures.xlsx' , sheet_name= 'Sheet5' )
fig, ax1 = plt. subplots( )
plt. bar( np. arange( len ( data) ) , data[ '改编篇数' ] , label= '改编篇数' , color= sns. xkcd_rgb[ "pale red" ] )
plt. bar( np. arange( len ( data) ) , data[ '总篇数' ] - data[ '改编篇数' ] , bottom= data[ '改编篇数' ] , label= '未改编篇数' , color= 'orange' )
plt. legend( bbox_to_anchor= ( 0.64 , 0.9 ) , fontsize= 12 )
ax2 = ax1. twinx( )
b2 = ax2. plot( np. arange( len ( data) ) , data[ '改编篇数占比' ] , label= '改编篇数占比' , color = sns. xkcd_rgb[ "denim blue" ] , marker= '*' )
ax1. set_ylabel( '篇数' , fontsize= 12 )
ax2. set_ylabel( '改编篇数占比' , fontsize= 12 )
ax1. set_ylim( 0 , 20 )
ax2. set_ylim( 0.9 , 1.01 )
ticks = ax1. set_xticks( np. arange( len ( data) ) )
labels = ax1. set_xticklabels( list ( data. index) )
labels2 = ax2. set_yticklabels( [ str ( int ( round ( val, 2 ) * 100 ) ) + '%' for val in np. arange( 0.9 , 1.001 , 0.02 ) ] )
plt. legend( bbox_to_anchor= ( 0.62 , 0.7 ) , fontsize= 12 )
x_bias = 0.08
y_bias = 0.4
for i in range ( len ( data) ) :
ax1. text( i- x_bias, data[ '总篇数' ] [ i] + y_bias, data[ '总篇数' ] . astype( 'int' ) . astype( 'str' ) [ i] )
plt. savefig( 'test1.png' , dpi= 400 , bbox_inches = 'tight' )