Существует ли лучший HTML выходящий и не выходящий инструмент, чем CGI для Ruby?

Вы можете сделать это, сделав осей twinx для частот. Вы можете переключить две оси y вокруг так, чтобы частоты оставались слева, а счетчики справа, но без необходимости пересчитывать ось отсчетов (здесь мы используем tick_left() и tick_right() для перемещения тиков и set_label_position для перемещения меток оси

Затем вы можете установить тики с помощью matplotlib.ticker модуль, особенно ticker.MultipleLocator и ticker.LinearLocator .

Что касается ваших аннотаций, вы можете получить адреса x и y для всех четырех углов бар с patch.get_bbox().get_points(). Это, наряду с правильной настройкой горизонтального и вертикального выравнивания, означает, что вам не нужно добавлять какие-либо произвольные смещения в место аннотации.

Наконец, вам нужно повернуть сетку (g7] ax2.grid(None) )

Вот рабочий скрипт:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import matplotlib.ticker as ticker

# Some random data
dfWIM = pd.DataFrame({'AXLES': np.random.normal(8, 2, 5000).astype(int)})
ncount = len(dfWIM)

plt.figure(figsize=(12,8))
ax = sns.countplot(x="AXLES", data=dfWIM, order=[3,4,5,6,7,8,9,10,11,12])
plt.title('Distribution of Truck Configurations')
plt.xlabel('Number of Axles')

# Make twin axis
ax2=ax.twinx()

# Switch so count axis is on right, frequency on left
ax2.yaxis.tick_left()
ax.yaxis.tick_right()

# Also switch the labels over
ax.yaxis.set_label_position('right')
ax2.yaxis.set_label_position('left')

ax2.set_ylabel('Frequency [%]')

for p in ax.patches:
    x=p.get_bbox().get_points()[:,0]
    y=p.get_bbox().get_points()[1,1]
    ax.annotate('{:.1f}%'.format(100.*y/ncount), (x.mean(), y), 
            ha='center', va='bottom') # set the alignment of the text

# Use a LinearLocator to ensure the correct number of ticks
ax.yaxis.set_major_locator(ticker.LinearLocator(11))

# Fix the frequency range to 0-100
ax2.set_ylim(0,100)
ax.set_ylim(0,ncount)

# And use a MultipleLocator to ensure a tick spacing of 10
ax2.yaxis.set_major_locator(ticker.MultipleLocator(10))

# Need to turn the grid on ax2 off, otherwise the gridlines end up on top of the bars
ax2.grid(None)

plt.savefig('snscounter.pdf')

19
задан James A. Rosen 18 December 2008 в 19:05
поделиться

2 ответа

htmlentities драгоценный камень должен добиться цели:

require 'rubygems'
require 'htmlentities'

coder = HTMLEntities.new

coder.decode('…') # => "…"
coder.decode('…') # => "…"
coder.decode('¢') # => "¢"
coder.decode('¢') # => "¢"
coder.encode("…", :named) # => "…"
coder.encode("…", :decimal) # => "…"
28
ответ дан 30 November 2019 в 04:08
поделиться
require 'rubygems'
require 'hpricot'

Hpricot('…', :xhtml_strict => true).to_plain_text

, Хотя Вам, возможно, придется возиться с кодировкой символов.

2
ответ дан 30 November 2019 в 04:08
поделиться
Другие вопросы по тегам:

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