Как выровнять xticks в сгруппированном баре чата для matplotlib? - PullRequest
1 голос
/ 24 мая 2019

Раньше я использовал MATLAB для рисования фигур, но сейчас я изучаю Python. Я хочу организовать бар одинаково на x-tick. Например, в задаче, указанной ниже, я хочу, чтобы на каждой стороне метки x-tick было две полоски. Я поместил код здесь и рисунок, который я пытаюсь сделать.

Кроме того, поскольку я изучаю python, я хотел бы получить отзыв о моем коде (хотя я воспользовался помощью онлайн-учебников). Как я могу сделать это лучше?

import pandas as pd  import matplotlib import matplotlib.pyplot as plt
import numpy as np

raw_data = {'Load': ['50', '100'], 'Diesel': [1.738, 1.689], 'D59O41':
[1.71, 1.649],'D74Eu26': [1.71, 1.649], 'D59T41': [1.748, 1.702]}

df = pd.DataFrame(raw_data, columns = ['Load', 'Diesel', 'D59O41',
'D74Eu26', 'D59T41']) df;

pos = (50,100) 

n_groups = 2

# Setting the positions and width for the bars 

index = np.arange(n_groups)
width = 10 
r1 = pos 
r2 = [x + width for x in r1] 
r3 = [x + width for x in r2] 
r4 = [x + width for x in r3]

# Plotting the bars 

fig, ax = plt.subplots(figsize=(10,5))

plt.bar(r1, df['Diesel'], width, alpha=1, lw =1.8, edgecolor='black',
facecolor='black') 


plt.bar(r2, df['D59O41'], width, alpha=1,lw =2,
edgecolor='black', facecolor='none') 

plt.bar(r3, df['D74Eu26'], width, alpha=0.65,lw =2, edgecolor='red', 
facecolor='red') 

plt.bar(r4, df['D59T41'], width, alpha=0.65,lw =2, edgecolor='red', 
facecolor='none')


# Set the y axis label 

ax.set_ylabel('Fractal dimension')

# Set the x axis label 

ax.set_xlabel('Load')

# Set the chart's title

ax.set_title('Test Figure')

# Set the position of the x ticks

ax.set_xticks([p*1.1 + width for p in pos])


# Set the labels for the x ticks 

ax.set_xticklabels([50, 100])

# Setting the x-axis and y-axis limits

plt.xlim(min(pos)-width, max(pos)+width*6) 
plt.ylim([0, 2.5])

# Adding the legend and showing the plot 

plt.legend(['Diesel', 'D59O41', 'D74E26', 'D59T41'], loc='upper right')
plt.savefig('test_figure.tif', format='tif', dpi=300) 
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...