Visualize_ch1
Python可视化的基础知识
作分析的数据文件和Jupyter文档都在这里:https://github.com/Clairewr/DA_ML_DL/tree/master/Visualize
Part I
import matplotlib.pyplot as plt
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
data=pd.read_csv('percent-bachelors-degrees-women-usa.csv')
data.head()
data.count()
import matplotlib.pyplot as plt plt.plot(year, physical_sciences, color='blue') plt.plot(year,computer_science,color='red') plt.show()
In calling plt.axes([xlo, ylo, width, height])
#Note that these coordinates can be passed to plt.axes() in the form of a list or a tuple.
# Create plot axes for the first line plot plt.axes([0.05,0.05,0.425,0.9]) #注意传入的是个 List 或是 tuple # Plot in blue the % of degrees awarded to women in the Physical Sciences plt.plot(year, physical_sciences, color='blue') # Create plot axes for the second line plot plt.axes([0.525,0.05,0.425,0.9]) # Plot in red the % of degrees awarded to women in Computer Science plt.plot(year, computer_science, color='red') # Display the plot plt.show()
Using subplot()
The command plt.axes() requires a lot of effort to use well because the coordinates of the axes need to be set manually. A better alternative is to use plt.subplot() to determine the layout automatically.
#1x2 一行两列。 在使用plot前都需要先active对应的 subplot。
# Create a figure with 1x2 subplot and make the left subplot active plt.subplot(1,2,1) # Plot in blue the % of degrees awarded to women in the Physical Sciences plt.plot(year, physical_sciences, color='blue') plt.title('Physical Sciences') # Make the right subplot active in the current 1x2 subplot grid plt.subplot(1,2,2) # Plot in red the % of degrees awarded to women in Computer Science plt.plot(year, computer_science, color='red') plt.title('Computer Science') # Use plt.tight_layout() to improve the spacing between subplots plt.tight_layout() plt.show()
绘制一个2x2的 subplot,第三个位置参数按从左到右,从上到下分别为1,2,3,4
# Create a figure with 2x2 subplot layout and make the top left subplot active plt.subplot(2,2,1) plt.plot(year, physical_sciences, color='blue') plt.title('Physical Sciences') # Make the top right subplot active in the current 2x2 subplot grid plt.subplot(2,2,2) plt.plot(year, computer_science, color='red') plt.title('Computer Science') # Make the bottom left subplot active in the current 2x2 subplot grid plt.subplot(2,2,3) plt.plot(year, health, color='green') plt.title('Health Professions') # Make the bottom right subplot active in the current 2x2 subplot grid plt.subplot(2,2,4) plt.plot(year, education, color='yellow') plt.title('Education') # Improve the spacing between subplots and display them plt.tight_layout() plt.show()

xlim, ylim用于截取部分区间,也即使focus on 局部数据
# Plot the % of degrees awarded to women in Computer Science and the Physical Sciences plt.plot(year,computer_science, color='red') plt.plot(year, physical_sciences, color='blue') # Add the axis labels plt.xlabel('Year') plt.ylabel('Degrees awarded to women (%)') # Set the x-axis range plt.xlim(1990,2010)# 中间用逗号隔开 # Set the y-axis range plt.ylim(0,50) # 这里的50就是: 50% # Add a title and display the plot plt.title('Degrees awarded to women (1990-2010)\nComputer Science (red)\nPhysical Sciences (blue)') plt.show() # Save the image as 'xlim_and_ylim.png' plt.savefig('xlim_and_ylim.png')
与xlim, ylim同样的实现方法是用 plt.axis,传入list或tuple,注意区分axis(轴线)和axes(坐标轴), 我的理解是axis包含于axes
# Plot in blue the % of degrees awarded to women in Computer Science plt.plot(year,computer_science, color='blue') # Plot in red the % of degrees awarded to women in the Physical Sciences plt.plot(year, physical_sciences,color='red') # Set the x-axis and y-axis limits plt.axis([1990,2010,0,50]) # Show the figure plt.show() # Save the figure as 'axis_limits.png' plt.savefig('axis_limits.png')
plt.legend(loc='lower center')注意loc参数
# Specify the label 'Computer Science' plt.plot(year, computer_science, color='red', label='Computer Science') # Specify the label 'Physical Sciences' plt.plot(year, physical_sciences, color='blue', label='Physical Sciences') # Add a legend at the lower center plt.legend(loc='lower center') # Add axis labels and title plt.xlabel('Year') plt.ylabel('Enrollment (%)') plt.title('Undergraduate enrollment of women') plt.show()
# Plot with legend as before plt.plot(year, computer_science, color='red', label='Computer Science') plt.plot(year, physical_sciences, color='blue', label='Physical Sciences') plt.legend(loc='lower right') # Compute the maximum enrollment of women in Computer Science: cs_max cs_max = computer_science.max() # Calculate the year in which there was maximum enrollment of women in Computer Science: yr_max yr_max = year[computer_science.argmax()]#这里比较奇怪的是用x坐标的argmax()函数的返回值,作为year的index # Add a black arrow annotation plt.annotate('Maximum', xy=(yr_max, cs_max), xytext=(yr_max+5, cs_max+5), arrowprops=dict(facecolor='black'))#annotate的第一个参数是注释Label # Add axis labels and title plt.xlabel('Year') plt.ylabel('Enrollment (%)') plt.title('Undergraduate enrollment of women') plt.show()
使用style:
# Import matplotlib.pyplot import matplotlib.pyplot as plt # Set the style to 'ggplot' plt.style.use('ggplot') # Create a figure with 2x2 subplot layout plt.subplot(2, 2, 1) # Plot the enrollment % of women in the Physical Sciences plt.plot(year, physical_sciences, color='blue') plt.title('Physical Sciences') # Plot the enrollment % of women in Computer Science plt.subplot(2, 2, 2) plt.plot(year, computer_science, color='red') plt.title('Computer Science') # Add annotation cs_max = computer_science.max() yr_max = year[computer_science.argmax()] plt.annotate('Maximum', xy=(yr_max, cs_max), xytext=(yr_max-1, cs_max-10), arrowprops=dict(facecolor='black')) # Plot the enrollmment % of women in Health professions plt.subplot(2, 2, 3) plt.plot(year, health, color='green') plt.title('Health Professions') # Plot the enrollment % of women in Education plt.subplot(2, 2, 4) plt.plot(year, education, color='yellow') plt.title('Education') # Improve spacing between subplots and display them plt.tight_layout() plt.show()

浙公网安备 33010602011771号