Правильное добавление второго набора тиков в палитру python matplotlib

fgets читает до тех пор, пока не увидит новую строку, а затем вернется, поэтому при вводе bob в консоли targetName содержит «bob\n», который не соответствует «bob». Из документации fgets: (добавлено выделение жирным шрифтом)

Читает символы из потока и сохраняет их как строку C в str до тех пор, пока не будут прочитаны символы (num-1) или не будет новой строки или конца -of-File, в зависимости от того, что наступит раньше. Символ новой строки заставляет fgets останавливать чтение, но считается действительным символом, и поэтому он включен в строку, скопированную на str. Нулевой символ автоматически добавляется в str после того, как символы, прочитанные для обозначения конца строки C.

Перед сопоставлением нужно удалить новую строку из конца targetName.

int cch = strlen(targetName);
if (cch > 1 && targetName[cch-1] == '\n')
   targetName[cch-1] = '\0';

или добавить новую строку в тестовую строку.

char targetName[50];
fgets(targetName,50,stdin);

char aName[] = "bob\n";
printf("%d",strcmp(aName,targetName));
1
задан Leander Moesinger 17 January 2019 в 12:49
поделиться

1 ответ

Вы можете достичь того же результата, не рисуя вторую цветовую панель, вам просто нужно создать новые оси с галочками вправо и настроить диапазон оси Y в соответствии с диапазоном данных вашего третьего графика. 113]

import matplotlib.pyplot as plt
import numpy as np

# Fixing random state for reproducibility
np.random.seed(19680801)

# create three subplots
fig, axes = plt.subplots(3)

# filling subplots with figures and safing the map of the first and third figure.
# fig 1-2 have a data range of 0 - 1
map12 =axes[0].imshow(np.random.random((100, 100)), cmap=plt.cm.BuPu_r)
axes[1].imshow(np.random.random((100, 100)), cmap=plt.cm.BuPu_r)
# figure 3 has a larger data range from 0 - 5
map3 = axes[2].imshow(np.random.random((100, 100))*5, cmap=plt.cm.BuPu_r)

# Create two axes for the colorbar on the same place. 
cax12 = plt.axes([0.85, 0.1, 0.075, 0.8])
cax3 = cax12.twinx()
# plot first colorbar
cbar12 = plt.colorbar(map12, cax=cax12, label='ticks for top two figs')
# move ticks and label of colorbar to the left
cbar12.ax.yaxis.set_ticks_position('left')
cbar12.ax.yaxis.set_label_position('left')
# adjust limits of right axis to match data range of 3rd plot
cax3.set_ylim(0,5)
cax3.set_ylabel('ticks for bottom fig')
## display image
plt.show()

enter image description here

0
ответ дан Diziet Asahi 17 January 2019 в 12:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: