Matplotlib 데이터 시각화 사용 방법 알아보기
1. 소개
데이터 표시, 즉 데이터 시각화는 데이터 분석의 다섯 번째 단계입니다. 대부분의 사람들은 숫자보다 그래픽에 더 민감합니다. 패턴, 데이터 뒤에 숨겨진 가치를 찾아보세요.
2.Matplotlib 개념
Matplotlib은 Python에서 흔히 사용되는 2D 드로잉 라이브러리로, 데이터를 쉽게 시각화하고 아름다운 차트를 만들 수 있습니다. Matplotlib 모듈은 매우 크며 가장 일반적으로 사용되는 하위 모듈 중 하나는 pyplot입니다. 일반적으로 다음과 같은 방식으로 가져옵니다.
import matplotlib.pyplot as plt
코드 세그먼트 1:
import numpy as np import matplotlib.pyplot as plt x = np.arange(0,2*np.pi,0.1) #生成一个0到2pi、步长为0.1的数组x y = np.sin(x) #将x的值传入正弦函数,得到对应的值存入数组y plt.plot(x,y) #传入plt.plot(),将x,y转换成对应坐标。 plt.show() #显示图像
위 프로그램은 다음 이미지를 그립니다.
참고: 단계 크기를 선택하세요. x를 0.1로 하여 각 점 사이의 간격을 작게 만들어 이미지를 실제 상황에 가깝게 만들기 위해, 그렇지 않으면 스텝 크기가 너무 크면 폴리라인이 됩니다. 스텝 크기가 1이면 폴리라인이 됩니다. 다음 상황:
import numpy as np import matplotlib.pyplot as plt x = np.arange(0,2*np.pi,0.1) #生成一个0到2pi,步长为0.1的数组x y1 = np.sin(x) #将x的值传入正弦函数,得到对应的值存入数组y1 y2 = np.cos(x) #将x的值传入余弦函数,得到对应的值存入数组y1 plt.plot(x,y1,x,y2) #传入plt.plot(),将(x,y1)、(x,y2)转换成对应坐标。 plt.show() #显示图像
위 프로그램은 동일한 x를 사용합니다. 물론 새로운 x를 재정의할 수도 있습니다.
plt.plot(x,y1) plt.plot(x,y2)
코드 세그먼트 3:
import numpy as np import matplotlib.pyplot as plt x = np.arange(0,2*np.pi,0.1) #生成一个0到2pi,步长为0.1的数组x y1 = np.sin(x) #将x的值传入正弦函数,得到对应的值存入数组y1 y2 = np.cos(x) #将x的值传入余弦函数,得到对应的值存入数组y1 plt.plot(x,y1,'ro--',x,y2,'b*-.') #将(x,y1)、(x,y2)转换成对应坐标,并选用格式化参数 plt.show() #显示图像
코드 세그먼트 2에 형식 지정 매개변수를 전달한 후 최종 이미지는 다음과 같습니다.
일반적으로 선은 점선으로 표시되고 좌표점은 점으로 표시됩니다. 형식 매개변수의 이 세 부분은 모두 선택 사항입니다. 즉, 부분을 전달할 수도 있으며 순서 요구 사항이 없습니다. 일반적으로 사용되는 형식 매개 변수의 선택과 의미는 다음 표와 같습니다. 'ro--'
3. 데이터 표시
3.1 표시 방법 선택 방법
우리는 데이터 분석을 통해 결정을 내리기 때문에 데이터를 정확하게 표시하려면 적절한 차트를 사용하는 것이 중요합니다. 실제 사용에서는 데이터 표시 목적에 따라 수십 가지의 다양한 차트를 사용합니다. 즉, 추세, 비교, 구성, 분포 및 연결의 다섯 가지 유형으로 나눌 수 있습니다.
- 시간에 따른 데이터 변화와 관련된 가장 일반적인 시계열 관계입니다. 추세의 아이콘은 연간, 월별, 일별 변화 추세, 성장, 감소, 상승을 직관적으로 반영할 수 있습니다. 그리고 하락 변동은 여전히 기본적으로 변하지 않습니다. 가장 일반적인 것은 시간 경과에 따른 지표의 추세를 잘 보여줄 수 있는 선 차트입니다.
구성:
역분석 대상이 "공유", "백분율" 등인 경우 주로 각 부분이 전체적으로 차지하는 비율에 중점을 둡니다. 관계를 표시하는 차트 유형으로, 가장 일반적으로 원형 차트가 사용됩니다. 비교:
남자와 여자의 키 차이를 분석하는 등 특정 차원의 순서를 표시하고 특정 차원 간의 비교가 유사한지 "보다 큼" 또는 "보다 작음"인지 분석할 수 있습니다. 분포:
예를 들어 지리적 위치 데이터를 기반으로 하는 데이터 세트의 빈도와 분포에 관심이 있는 경우 지도를 사용하여 다양한 분포 특성을 표시합니다. 더 일반적으로 사용되는 차트에는 지도, 히스토그램, 산점도가 포함됩니다. 联系:主要查看两个变量之间是否表达出我们所要证明的相关关系,比如预期销售额可能随着优惠折扣的增长而增长,常用于表打“与......有关”、“随......而增长”、“随......而不同”等维度的关系。
在进行数据可视化时,要先明确分析的目标,再来选择五种合适的分类,最后选择某个分类里合适的图表类型。
3.2绘制折线图
其实在前面已经用过折线图了,就是使用 plot.plot() 方法。之前我们传入的时x和y坐标点,而折线图的 x 和 y 分别是时间点和对应的数据,下面以两个商品的销量走势为例:
import numpy as np import matplotlib.pyplot as plt x = ['周一','周二','周三','周四','周五','周六','周日'] y1 = [61,42,52,72,86,91,73] y2 = [23,26,67,38,46,55,33] #传入label参数 plt.rcParams['font.family'] = ['SimHei'] #设置字体防止乱码 plt.plot(x, y1, label='商品A') #增加折线图例“商品A” plt.plot(x, y2, label='商品B') #增加折线图例“商品B” #设置x轴标签 plt.xlabel('时间') plt.ylabel('销量') #设置图表标题 plt.title('商品销量对比图') #显示图例、图像 plt.legend(loc='best') #显示图例,并设置在“最佳位置” plt.show()
得到的图像如下图所示:
因为上图中有中文,所以通过 plt.rcParams['font.family'] = ['SimHei'] 来设置中文字体来防止乱码,如果想设置其他字体只需将 SimHei(黑体)替换成相应的名称即可。通过一下代码获得,自己编译器所在环境安装的字体:
import matplotlib.font_manager as fm for font in fm.fontManager.ttflist: print(font.name)
图例位置是一个可选参数,默认 matplotlib 会自动选择合适位置,也可以指定其他位置。
具体的如下表所示:
plt.legend() 方法的 loc 参数选择 参数含义参数含义best最佳位置center居中upper right右上角center right靠右居中upper left左上角center left靠左居中lower left左下角lower center靠下居中lower right右下角upper center靠上居中
3.3绘制柱状图
柱状图描述的是分类数据,展示的是每一类的数量。柱状图分为很多种,有普通柱状图、堆叠柱状图、分组柱状图等。
3.3.1普通柱状图
普通柱状图调用 plt.bar() 方式实现。我们至少需要传入两个参数,第一个参数是 x 轴上刻度的标签序列(列表、元组、数组等),第二个参数用于指定每个柱子的高度,也就是具体的数据。下面以一个班级体育课选课的情况为例:
import matplotlib.font_manager as fm for font in fm.fontManager.ttflist: print(font.name)
得到如下图像:
plt.bar() 前两个参数是必选的,当然还有一些可选参数,常用的有 width 和 color ,分别是用于设置柱子的宽度(默认0.8)和颜色。比如我们将柱子宽度改成0.6,将柱子的颜色设成好看的天蓝色只需将 plt.bar() 改为 plt.bar(names, nums, width=0.6, color='skyblue') 即可。之前在折线图部分用到的 plt.xlabel() 、plt.ylabel() 、plt.title() 和 plt.legend() 方法都是通用方法,并不局限于一种图表,所有的图表都适用。
3.3.2堆叠柱状图
柱状图能直观地展现出不同数据上的差异,但有时候我们需要进一步分析数据的分布,比如每门选修课的男女比例,这时就需要用到堆叠柱状图。
下面就是进一步分析每一门选修课中男女比例为例编写程序:
import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.family'] = ['SimHei'] #设置字体防止乱码 name = ['乒乓球','羽毛球','网球'] nums_boy = [16,5,11] nums_girl = [10,15,8] plt.bar(name, nums_boy, width=0.6, color='skyblue', label='男') plt.bar(name, nums_girl, bottom=nums_boy, width=0.6, color='pink', label='女') plt.legend() plt.show()
最终得到图像:
上面的代码和普通柱状图相比,多调用了一次,plt.bar() 方法,并传入了 bottom 参数,每调用一次 plt.bar() 方法都会画出对应的柱状图,而 bottom 参数作用就是控制柱状图低端的位置。我们将前一个柱状图的高度传进去,这样就形成了堆叠柱状图。而如果没有 bottom 参数,后面的图形会盖在原来的图形之上,
就像下面这样:
3.3.3分组柱状图
分组柱状图经常用于不同组间数据的比较,这些组都包含了相同分类的数据。
先来看一下效果图:
绘制上图的代码如下:
import numpy as np import matplotlib.pyplot as plt x = np.arange(3) width = 0.3 names = ['篮球', '羽毛球', '乒乓球'] nums_boy = [16, 5, 11] nums_girl = [10, 15, 8] plt.rcParams['font.family'] = ['SimHei'] #设置字体防止乱码 plt.bar(x - width / 2, nums_boy, width=width, color='skyblue', label='男') plt.bar(x + width / 2, nums_girl, width=width, color='pink', label='女') plt.xticks(x, names) plt.legend() plt.show()
这次的方法和之前有些不同,首先使用 np.arange(3) 方法创建了一个数组 x ,值为[0,1,2]。并定义了一个变量 width 用于指定柱子的宽度。在调用 plt.bar() 时,第一个参数不再是刻度线上的标签,而是对应的刻度。以[0,1,2]为基准,分别加上或减去柱子的宽度得到[-0.15,0.85,1,85]和[0.15,1.15,2.15],这些刻度将分别作为两组柱子的中点,并且柱子的宽度为0.3。
因为传入的是刻度,而不是刻度的标签。所以调用 plt.xticks() 方法来将 x 轴上刻度改为对应的标签,该方法第一个参数时要改的刻度序列,第二个参数时与之对于的标签序列。同理,使用plt.yticks() 方法来更改y轴上刻度的标签。
3.3.4饼图
饼图广泛地应用在各个领域,用于表示不同分类的占比情况,通过弧度大小来对比各种分类。饼图通过将一个圆饼按照分类的占比划分成多个区块,整个圆饼代表数据的总量,每个区块(圆弧)表示该分类占总体的比例大小,所有区块(圆弧)的加和等于100%。
饼图的绘制很简单,只需要传入数据和对于的标签给 plt.pie() 方法即可。以2018年国内生产总值(GDP)三大产业的占比为例,可以画出这样的饼图:
绘制上图的代码如下:
import matplotlib.pyplot as plt plt.rcParams['font.family'] = ['SimHei'] #设置字体防止乱码 data = [64745.2, 364835.2, 489700.8] labels = ['第一产业', '第二产业', '第三产业'] explode = (0.1, 0, 0) plt.pie(data, explode=explode, labels=labels,autopct='%0.1f%%') plt.show()
plt.pie() 方法的第一个参数是绘图需要的数据;参数 explode 是可选参数,用于突出显示某一区块,默认数值都是0,数值越大,区块抽离越明显;参数 lables 是数据对应的标签;参数 autopct 则给饼图自动添加百分比显示。
参数 autopct 的格式用到了字符串格式化输出的知识,代码中 '%0.1f%%' 可以分成两部分。一部分是 %0.1f 表示保留一位小数,同理 %0.2f 表示保留两位小数;另一部分是 %% ,它表示输出一个 %,因为% 在字符串格式化输出中有特殊的含义,所以想要输出 % 就得写成 %% 。所以,'%0.1f%%' 的含义是保留一位小数的百分数,例如:66.6%。
4.绘制子图
Matplotlib 提供了子图的概念,通过使用子图,可以在一张图里绘制多个图表。在 matplotlib 中,调用 plt.subplot() 方法来添加子图。plt.subplot() 方法的前两个参数分别是子图的行数和列数,第三个参数是子图的序号(从1开始)。
ax1 = plt.subplot(2, 2, 1) ax2 = plt.subplot(2, 2, 2) ax3 = plt.subplot(2, 2, 3) ax4 = plt.subplot(2, 2, 4)
plt.subplot(2,2,1) 的作用是生成一个两行两列的子图,并选择其中序号为1的子图,所以上面四行代码将一张图分成了4个子图,并用1、2、3、4来选择对应的子图。
我们也可以绘制不规则的子图,比如上面两张子图,下面一张子图。
方法如下:
ax1 = plt.subplot(2, 2, 1) ax2 = plt.subplot(2, 2, 2) ax3 = plt.subplot(2, 1, 2)
之所以第三行代码是 plt.subplot(2, 1, 2) ,因为子图序号是独立的,与之前创建的子图没有关系。plt.subplot(2, 2, 1) 选择并展示了2*2的子图中的第一个。plt.subplot(2, 2, 2) 选择并展示了2*2的子图中的第二个,它们两个合起来占了2*2子图的第一行。而 plt.subplot(2, 1, 2) 则是生成了两行一列的子图,并选择了第二行。即占满第二行的子图,正好填补了之前2*2子图第二行剩下的空间,因此生成的图表是这样的:
图表的框架画好了,就可以往里面填充图像了,之前调用的是 plt 上的方法绘图,只要将其改成 plt.subplot() 方法的返回值上调用相应的方法绘图即可。
举个栗子,下面是在一张图上绘制了 sin、cos 和 tan 三个函数的图像的代码:
import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.family'] = ['SimHei'] #设置字体防止乱码 x = np.arange(0, 2 * np.pi, 0.1) plt.suptitle('三角函数可视化') ax1 = plt.subplot(2,2,1) ax1.set_title('sin函数') y1 = np.sin(x) ax1.plot(x,y1) ax2 = plt.subplot(2,2,2) ax2.set_title('cos函数') y2 = np.cos(x) ax2.plot(x,y2) ax3 = plt.subplot(2,1,2) ax3.set_title('tan函数') y3 = np.tan(x) ax3.plot(x,y3) plt.show()
得到的图像是:
上面程序中,使用 set_title() 方法为每个子图设置单独的标题。需要注意的是,如果想要给带有子图的图表设置总的标题的话,不是使用的 plt.titie() 方法,而是通过 plt.suptitile() 方法来设置带有子图的图表标题。
위 내용은 Matplotlib 데이터 시각화 사용 방법 알아보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











MySQL에는 무료 커뮤니티 버전과 유료 엔터프라이즈 버전이 있습니다. 커뮤니티 버전은 무료로 사용 및 수정할 수 있지만 지원은 제한되어 있으며 안정성이 낮은 응용 프로그램에 적합하며 기술 기능이 강합니다. Enterprise Edition은 안정적이고 신뢰할 수있는 고성능 데이터베이스가 필요하고 지원 비용을 기꺼이 지불하는 응용 프로그램에 대한 포괄적 인 상업적 지원을 제공합니다. 버전을 선택할 때 고려 된 요소에는 응용 프로그램 중요도, 예산 책정 및 기술 기술이 포함됩니다. 완벽한 옵션은없고 가장 적합한 옵션 만 있으므로 특정 상황에 따라 신중하게 선택해야합니다.

이 기사는 MySQL 데이터베이스의 작동을 소개합니다. 먼저 MySQLworkBench 또는 명령 줄 클라이언트와 같은 MySQL 클라이언트를 설치해야합니다. 1. MySQL-Uroot-P 명령을 사용하여 서버에 연결하고 루트 계정 암호로 로그인하십시오. 2. CreateABase를 사용하여 데이터베이스를 작성하고 데이터베이스를 선택하십시오. 3. CreateTable을 사용하여 테이블을 만들고 필드 및 데이터 유형을 정의하십시오. 4. InsertInto를 사용하여 데이터를 삽입하고 데이터를 쿼리하고 업데이트를 통해 데이터를 업데이트하고 DELETE를 통해 데이터를 삭제하십시오. 이러한 단계를 마스터하고 일반적인 문제를 처리하는 법을 배우고 데이터베이스 성능을 최적화하면 MySQL을 효율적으로 사용할 수 있습니다.

MySQL 설치 실패의 주된 이유는 다음과 같습니다. 1. 권한 문제, 관리자로 실행하거나 Sudo 명령을 사용해야합니다. 2. 종속성이 누락되었으며 관련 개발 패키지를 설치해야합니다. 3. 포트 충돌, 포트 3306을 차지하는 프로그램을 닫거나 구성 파일을 수정해야합니다. 4. 설치 패키지가 손상되어 무결성을 다운로드하여 확인해야합니다. 5. 환경 변수가 잘못 구성되었으며 운영 체제에 따라 환경 변수를 올바르게 구성해야합니다. 이러한 문제를 해결하고 각 단계를 신중하게 확인하여 MySQL을 성공적으로 설치하십시오.

MySQL 다운로드 파일은 손상되었습니다. 어떻게해야합니까? 아아, mySQL을 다운로드하면 파일 손상을 만날 수 있습니다. 요즘 정말 쉽지 않습니다! 이 기사는 모든 사람이 우회를 피할 수 있도록이 문제를 해결하는 방법에 대해 이야기합니다. 읽은 후 손상된 MySQL 설치 패키지를 복구 할 수있을뿐만 아니라 향후에 갇히지 않도록 다운로드 및 설치 프로세스에 대해 더 깊이 이해할 수 있습니다. 파일 다운로드가 손상된 이유에 대해 먼저 이야기합시다. 이에 대한 많은 이유가 있습니다. 네트워크 문제는 범인입니다. 네트워크의 다운로드 프로세스 및 불안정성의 중단으로 인해 파일 손상이 발생할 수 있습니다. 다운로드 소스 자체에도 문제가 있습니다. 서버 파일 자체가 고장 났으며 물론 다운로드하면 고장됩니다. 또한 일부 안티 바이러스 소프트웨어의 과도한 "열정적 인"스캔으로 인해 파일 손상이 발생할 수 있습니다. 진단 문제 : 파일이 실제로 손상되었는지 확인하십시오

MySQL은 기본 데이터 저장 및 관리를위한 네트워크 연결없이 실행할 수 있습니다. 그러나 다른 시스템과의 상호 작용, 원격 액세스 또는 복제 및 클러스터링과 같은 고급 기능을 사용하려면 네트워크 연결이 필요합니다. 또한 보안 측정 (예 : 방화벽), 성능 최적화 (올바른 네트워크 연결 선택) 및 데이터 백업은 인터넷에 연결하는 데 중요합니다.

MySQL 성능 최적화는 설치 구성, 인덱싱 및 쿼리 최적화, 모니터링 및 튜닝의 세 가지 측면에서 시작해야합니다. 1. 설치 후 innodb_buffer_pool_size 매개 변수와 같은 서버 구성에 따라 my.cnf 파일을 조정해야합니다. 2. 과도한 인덱스를 피하기 위해 적절한 색인을 작성하고 Execution 명령을 사용하여 실행 계획을 분석하는 것과 같은 쿼리 문을 최적화합니다. 3. MySQL의 자체 모니터링 도구 (showprocesslist, showstatus)를 사용하여 데이터베이스 건강을 모니터링하고 정기적으로 백업 및 데이터베이스를 구성하십시오. 이러한 단계를 지속적으로 최적화함으로써 MySQL 데이터베이스의 성능을 향상시킬 수 있습니다.

MySQL 데이터베이스 성능 최적화 안내서 리소스 집약적 응용 프로그램에서 MySQL 데이터베이스는 중요한 역할을 수행하며 대규모 트랜잭션 관리를 담당합니다. 그러나 응용 프로그램 규모가 확장됨에 따라 데이터베이스 성능 병목 현상은 종종 제약이됩니다. 이 기사는 일련의 효과적인 MySQL 성능 최적화 전략을 탐색하여 응용 프로그램이 고 부하에서 효율적이고 반응이 유지되도록합니다. 실제 사례를 결합하여 인덱싱, 쿼리 최적화, 데이터베이스 설계 및 캐싱과 같은 심층적 인 주요 기술을 설명합니다. 1. 데이터베이스 아키텍처 설계 및 최적화 된 데이터베이스 아키텍처는 MySQL 성능 최적화의 초석입니다. 몇 가지 핵심 원칙은 다음과 같습니다. 올바른 데이터 유형을 선택하고 요구 사항을 충족하는 가장 작은 데이터 유형을 선택하면 저장 공간을 절약 할 수있을뿐만 아니라 데이터 처리 속도를 향상시킬 수 있습니다.

MySQL이 시작을 거부 했습니까? 당황하지 말고 확인합시다! 많은 친구들이 MySQL을 설치 한 후 서비스를 시작할 수 없다는 것을 알았으며 너무 불안했습니다! 걱정하지 마십시오.이 기사는 침착하게 다루고 그 뒤에있는 마스터 마인드를 찾을 수 있습니다! 그것을 읽은 후에는이 문제를 해결할뿐만 아니라 MySQL 서비스에 대한 이해와 문제 해결 문제에 대한 아이디어를 향상시키고보다 강력한 데이터베이스 관리자가 될 수 있습니다! MySQL 서비스는 시작되지 않았으며 간단한 구성 오류에서 복잡한 시스템 문제에 이르기까지 여러 가지 이유가 있습니다. 가장 일반적인 측면부터 시작하겠습니다. 기본 지식 : 서비스 시작 프로세스 MySQL 서비스 시작에 대한 간단한 설명. 간단히 말해서 운영 체제는 MySQL 관련 파일을로드 한 다음 MySQL 데몬을 시작합니다. 여기에는 구성이 포함됩니다
