Общие знания о рисовании питона

визуализация данных

Общие знания о рисовании питона

Figure(), subplot() и subplots(), figure.add_subplot(), figure.add_axes(), plt.plot(), plt.xlim() и plt.ylim(), plt.legeng(), plt. показывать()

функция фигура()

Прототип функции:

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)

-- Создайте новую фигуру или активируйте существующую фигуру Создайте новый холст или активируйте существующий холст

параметр:

  • num: int или str, уникальный номер фигуры. Если вы не укажете вызов figure, он автоматически увеличится с 1 до int по умолчанию.
  • figsize: укажите ширину и высоту фигуры в дюймах; = (вес, высота)
  • dpi: Определяет разрешение объекта рисования, т. е. количество пикселей на дюйм. Значение по умолчанию — 80. 1 дюйм равен 2,5 см, а размер бумаги формата А4 — 21*30 см.
  • facecolor: цвет фона, facecolor='синий'
  • edgecolor: цвет границы
  • frameon: отображать ли границу

(1) Для рисования только одной картинки не обязательно использоватьplt.figure(), по умолчанию рисует графику на холсте

import matplotlib.pyplot as plt
x=[1,2,3]
y1=[1,2,4]
y2=[1,4,8]
plt.plot(x,y1,color = "red",label = "red")
plt.plot(x,y2,color = "green",label = "green")
plt.legend()  #无此语句会不显示右上角label
plt.show()

image-20210415162604437.png

(2) Если вы хотите нарисовать две картинки, вы должны использоватьplt.figure()两次, вы можете указать число, или вы не можете указать число, оно добавит 1 по умолчанию, если будет вызвано дважды

import matplotlib.pyplot as plt
x=[1,2,3]
y1=[1,2,4]
y2=[1,4,8]

plt.figure()
plt.plot(x,y1,color = "red",label = "red")
plt.legend()  #无此语句会不显示右下角label

plt.figure()
plt.plot(x,y2,color = "green",label = "green")
plt.legend()  #无此语句会不显示右上角label
plt.show()

image-20210415163027463.pngКонечно, вы также можете указать тот же номер, который будет таким же, как вывод выше, и вывести изображение на тот же холст.

Это также дает нам возможность добавлять изображения на холст позже, просто вызовитеplt.figure(num), а затем вызовите функцию, рисующую график, напримерplt.plot()Ждать.

подсюжет() и подсюжеты()

subplot() может разделить фигуру на n подграфиков, а затем каждое выполнение subplot() будет генерировать подграфик соответствующей позиции

Прототип функции Subplot():

subplot(nrows,ncols,sharex,sharey,subplot_kw,**fig_kw)`

параметр:

  • nrows: количество строк в подграфике
  • ncols: количество столбцов для подзаголовка
  • sharex : все подграфики должны использовать одинаковую шкалу оси X (настройка xlim повлияет на все подграфики)
  • sharey: все подграфики должны использовать одинаковую шкалу оси Y (настройка ylim повлияет на все подграфики)
  • subplot_kw: словарь ключевых слов, используемых для создания каждого сюжета
  • **fig_kw: другие ключевые слова при создании фигуры
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 100)
#作图1
plt.subplot(2,2,1)  #等效于plt.subplot(221)
plt.plot(x, x)
#作图2
plt.subplot(2,2,2)
plt.plot(x, -x)
#作图3
plt.subplot(2,2,3)
plt.plot(x, x ** 2)
plt.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#作图4
#plt.subplot(224)
#plt.plot(x, np.log(x))
plt.show()

image-20210415165717859.png

Функция subplots() аналогична параметру subplot().

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 100)
#划分子图
fig,axes=plt.subplots(2,2)   #返回一个画布和画轴对象,可以取出对于的画轴然后调用绘图函数
ax1=axes[0,0]
ax2=axes[0,1]
ax3=axes[1,0]
ax4=axes[1,1]

#作图1
ax1.plot(x, x)
#作图2
ax2.plot(x, -x)
#作图3
ax3.plot(x, x ** 2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#作图4
#ax4.plot(x, np.log(x))
plt.show()

image-20210415165730971.png

В отличие от subplot(), subplots() рисует все оси сразу, а затем вызывает функцию рисования.

Объект фигуры может добавлять субфигуры или области графика.

figure.add_subplot()

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 100)
#新建figure对象
fig=plt.figure()
#新建子图1
ax1=fig.add_subplot(2,2,1)
ax1.plot(x, x)
#新建子图3
ax3=fig.add_subplot(2,2,3)
ax3.plot(x, x ** 2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#新建子图4
ax4=fig.add_subplot(2,2,4)
ax4.plot(x, np.log(x))
plt.show()

image-20210415170415699.png

Видно, что эффект подсюжета ничем не отличается

figure.add_axes()

import numpy as np
import matplotlib.pyplot as plt

#新建figure
fig = plt.figure()
# 定义数据

x = np.array([1, 2, 3, 4, 5, 6, 7])

#新建区域ax1

#figure的百分比,从figure 10%的位置开始绘制, 宽高是figure的80%
#图像还是要在figure内部

left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
# 获得绘制的句柄
ax1 = fig.add_axes([left, bottom, width, height])  #获取一个区域
ax1.plot(x,x**2 , 'r')
ax1.set_title('a1')
#plt.plot(x, y, 'r')

#新增区域ax2,嵌套在ax1内
left, bottom, width, height = 0.2, 0.6, 0.25, 0.25
# 获得绘制的句柄
ax2 = fig.add_axes([left, bottom, width, height])#获取另一个区域
ax2.plot(x,x**3, 'b')
ax2.set_title('a2')
plt.show()

image-20210415171457355.png

Это позволяет вам рисовать изображения в любом месте рисунка, что более гибко!

plt.plot()

параметр:

  • x, y : x является необязательным, если x отсутствует, по умолчанию он будет от 0 до n-1, что является индексом y.

  • fmt : str, необязательный параметр, определяет действие цвета и стиля линии, например, «ro» — красный кружок, «r--» — красная пунктирная линия, это быстрый способ задать стиль, подробнее параметры могут ссылаться на последний аргумент клавиатуры.

  • kwargs : свойства Line2D, необязательные Это много необязательного содержимого, вы можете указать в нем много содержимого, например, «метка» указывает метку линии, «ширина линии» указывает ширину линии и т. д.

import matplotlib.pyplot as plt

a = [1, 2, 3, 4] # y 是 a的值,x是各个元素的索引
b = [5, 6, 7, 8]

plt.plot(a, b, 'g--', label = 'aa')
plt.xlabel('this is x')
plt.ylabel('this is y')
plt.title('this is a demo')
plt.legend() # 将样例显示出来
plt.show()

image-20210415172719004.png

plt.xlim() и plt.ylim()

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(1,10,1000)
y = np.random.rand(1000)

plt.scatter(x,y,label="scatter figure")
plt.legend()

plt.xlim(1,10) #指定x和y的刻度值
plt.ylim(0,1)
plt.show()

image-20210415184609374.png

plt.legeng()

легенда ------- (перевод: (карта или значок) легенда, описание, объяснение)

1.Установите положение столбца

plt.legend(loc='')#  填入位置,如:upper left,则图例在左上角

2.Установите размер шрифта легенды

fontsize : int or float or {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}

3.Установите границу и фон легенды

plt.legend(loc='best',frameon=False) #去掉图例边框
plt.legend(loc='best',edgecolor='red') #设置图例边框颜色
plt.legend(loc='best',facecolor='blue') #设置图例背景颜色,若无边框,参数无效

4.Установить заголовок легенды

legend = plt.legend(["BJ", "SH"], title='Beijing VS Shanghai')
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,10,1)
plt.plot(x,x,'r--',x,np.cos(x),'g--',marker='*')
plt.xlabel('row')
plt.ylabel('cow')
plt.legend(["BJ","SH"],loc='upper left',title='Beijing VS Shanghai'
         # ,frameon=False
          ,edgecolor='green'
          ,facecolor='black')
plt.show()

image-20210415190005063.png

plt.show()

plt.show()Именно для отображения картинки.Кто-то сказал,почему я не использовал эту функцию,картинка тоже может отображаться? ?

Это, вероятно, то, что вы используетеIPythonИнтерактивные среды программирования этого типа, такие какjupyter notebookЭто также относится к внутреннему вызовуIPython, поскольку эта категория может выводить результаты вовремя, если вам нужна IDE (интегрированная среда разработки, такая как pycharm), вы должны использоватьplt.show()