class ImageCharts

Image-Charts API URL builder

Attributes

_host[R]
_pathname[R]
_port[R]
_protocol[R]
_query[R]
_timeout[R]
request_headers[R]

Public Class Methods

new(secret: nil, protocol: 'https', host: 'image-charts.com', port: 443, timeout: 5000, previous: nil) click to toggle source
# File image-charts.rb, line 17
def initialize(secret: nil, protocol: 'https', host: 'image-charts.com', port: 443, timeout: 5000, previous: nil)
  @_protocol = protocol
  @_host = host
  @_port = port
  @_pathname = '/chart'
  @_timeout = timeout
  @_query = if previous then previous else Hash.new(0) end
  @_secret = secret
end

Public Instance Methods

chan(value) click to toggle source

gif configuration

[Reference documentation]{@link documentation.image-charts.com/reference/animation/} # @example chart = ImageCharts().chan('1200') chart = ImageCharts().chan('1300|easeInOutSine')

gif configuration

# File image-charts.rb, line 426
def chan(value)
  _clone 'chan', value
end
chbr(value) click to toggle source

Bar corner radius. Display bars with rounded corner.

[Reference documentation]{@link documentation.image-charts.com/bar-charts/#rounded-bar} # @example chart = ImageCharts().chbr('5') chart = ImageCharts().chbr('10')

Bar corner radius. Display bars with rounded corner.

# File image-charts.rb, line 414
def chbr(value)
  _clone 'chbr', value
end
chco(value) click to toggle source

You can specify the colors of a specific series using the chco parameter.

Format should be <series_2>,...,<series_m>, with each color in RRGGBB format hexadecimal number.
The exact syntax and meaning can vary by chart type; see your specific chart type for details.
Each entry in this string is an RRGGBB[AA] format hexadecimal number.
If there are more series or elements in the chart than colors specified in your string, the API typically cycles through element colors from the start of that series (for elements) or for series colors from the start of the series list.
Again, see individual chart documentation for details.

[Reference documentation]{@link documentation.image-charts.com/bar-charts/#examples} # @example chart = ImageCharts().chco('FFC48C') chart = ImageCharts().chco('FF0000,00FF00,0000FF') @default 'F56991,FF9F80,FFC48C,D1F2A5,EFFAB4' series colors

# File image-charts.rb, line 252
def chco(value)
  _clone 'chco', value
end
chd(value) click to toggle source

chart data

[Reference documentation]{@link documentation.image-charts.com/reference/data-format/} # @example chart = ImageCharts().chd('a:-100,200.5,75.55,110') chart = ImageCharts().chd('t:10,20,30|15,25,35') chart = ImageCharts().chd('s:BTb19_,Mn5tzb') chart = ImageCharts().chd('e:BaPoqM2s,-A__RMD6')

chart data

# File image-charts.rb, line 125
def chd(value)
  _clone 'chd', value
end
chdl(value) click to toggle source

Format: <data_series_1_label>|…|<data_series_n_label>. The text for the legend entries. Each label applies to the corresponding series in the chd array. Use a + mark for a space. If you do not specify this parameter, the chart will not get a legend. There is no way to specify a line break in a label. The legend will typically expand to hold your legend text, and the chart area will shrink to accommodate the legend.

[Reference documentation]{@link documentation.image-charts.com/reference/legend-text-and-style/} # @example chart = ImageCharts().chdl('NASDAQ|FTSE100|DOW')

Text for each series, to display in the legend

# File image-charts.rb, line 210
def chdl(value)
  _clone 'chdl', value
end
chdlp(value) click to toggle source

@default 'r' Position of the legend and order of the legend entries

# File image-charts.rb, line 391
def chdlp(value)
  _clone 'chdlp', value
end
chdls(value) click to toggle source

Specifies the color and font size of the legend text. <color>,<size>

[Reference documentation]{@link documentation.image-charts.com/reference/legend-text-and-style/} # @example chart = ImageCharts().chdls('9e9e9e,17') @default '000000' Chart legend text and style

# File image-charts.rb, line 221
def chdls(value)
  _clone 'chdls', value
end
chds(value) click to toggle source

You can configure some charts to scale automatically to fit their data with chds=a. The chart will be scaled so that the largest value is at the top of the chart and the smallest (or zero, if all values are greater than zero) will be at the bottom. Otherwise the "≶series_1_min>,≶series_1_max>,…,≶series_n_min>,≶series_n_max>" format set one or more minimum and maximum permitted values for each data series, separated by commas. You must supply both a max and a min. If you supply fewer pairs than there are data series, the last pair is applied to all remaining data series. Note that this does not change the axis range; to change the axis range, you must set the chxr parameter. Valid values range from (+/-)9.999e(+/-)199. You can specify values in either standard or E notation.

[Reference documentation]{@link documentation.image-charts.com/reference/data-format/#text-format-with-custom-scaling} # @example chart = ImageCharts().chds('-80,140')

data format with custom scaling

# File image-charts.rb, line 136
def chds(value)
  _clone 'chds', value
end
chf(value) click to toggle source

Background Fills

[Reference documentation]{@link documentation.image-charts.com/reference/background-fill/} # @example chart = ImageCharts().chf('b0,lg,0,f44336,0.3,03a9f4,0.8') @default 'bg,s,FFFFFF' Background Fills

# File image-charts.rb, line 402
def chf(value)
  _clone 'chf', value
end
chg(value) click to toggle source

Solid or dotted grid lines

[Reference documentation]{@link documentation.image-charts.com/reference/grid-lines/} # @example chart = ImageCharts().chg('1,1') chart = ImageCharts().chg('0,1,1,5') chart = ImageCharts().chg('1,1,FF00FF') chart = ImageCharts().chg('1,1,1,1,CECECE')

Solid or dotted grid lines

# File image-charts.rb, line 235
def chg(value)
  _clone 'chg', value
end
chl(value) click to toggle source

If specified it will override "chdl" values

[Reference documentation]{@link documentation.image-charts.com/reference/chart-label/} # @example chart = ImageCharts().chl('label1|label2') chart = ImageCharts().chl('multi# line# label1|label2')

bar, pie slice, doughnut slice and polar slice chart labels

# File image-charts.rb, line 356
def chl(value)
  _clone 'chl', value
end
chld(value) click to toggle source

QRCode error correction level and optional margin

[Reference documentation]{@link documentation.image-charts.com/qr-codes/#error-correction-level-and-margin} # @example chart = ImageCharts().chld('L|4') chart = ImageCharts().chld('M|10') chart = ImageCharts().chld('Q|5') chart = ImageCharts().chld('H|18') @default 'L|4' QRCode error correction level and optional margin

# File image-charts.rb, line 161
def chld(value)
  _clone 'chld', value
end
chli(value) click to toggle source

doughnut chart inside label

[Reference documentation]{@link documentation.image-charts.com/pie-charts/#inside-label} # @example chart = ImageCharts().chli('95K€') chart = ImageCharts().chli('45%')

doughnut chart inside label

# File image-charts.rb, line 438
def chli(value)
  _clone 'chli', value
end
chlps(value) click to toggle source

Position and style of labels on data

[Reference documentation]{@link documentation.image-charts.com/reference/chart-label/#positionning-and-formatting} # @example chart = ImageCharts().chlps('align,top|offset,10|color,FF00FF') chart = ImageCharts().chlps('align,top|offset,10|color,FF00FF')

Position and style of labels on data

# File image-charts.rb, line 368
def chlps(value)
  _clone 'chlps', value
end
chls(value) click to toggle source

line thickness and solid/dashed style

[Reference documentation]{@link documentation.image-charts.com/line-charts/#line-styles} # @example chart = ImageCharts().chls('10') chart = ImageCharts().chls('3,6,3|5')

line thickness and solid/dashed style

# File image-charts.rb, line 344
def chls(value)
  _clone 'chls', value
end
chm(value) click to toggle source

compound charts and line fills

# File image-charts.rb, line 332
def chm(value)
  _clone 'chm', value
end
chma(value) click to toggle source

chart margins

[Reference documentation]{@link documentation.image-charts.com/reference/chart-margin/} # @example chart = ImageCharts().chma('30,30,30,30') chart = ImageCharts().chma('40,20')

chart margins

# File image-charts.rb, line 380
def chma(value)
  _clone 'chma', value
end
choe(value) click to toggle source

How to encode the data in the QR code. 'UTF-8' is the default and only supported value. Contact our team if you wish to have support for Shift_JIS and/or ISO-8859-1.

[Reference documentation]{@link documentation.image-charts.com/qr-codes/#data-encoding} # @example chart = ImageCharts().choe('UTF-8')

QRCode data encoding

# File image-charts.rb, line 147
def choe(value)
  _clone 'choe', value
end
chof(value) click to toggle source

Some clients like Flowdock/Facebook messenger and so on, needs an URL to ends with a valid image extension file to display the image, use this parameter at the end your URL to support them. Valid values are ".png", ".svg" and ".gif".

Only QRCodes and GraphViz support svg output.

[Reference documentation]{@link documentation.image-charts.com/reference/output-format/} # @example chart = ImageCharts().chof('.png') chart = ImageCharts().chof('.svg') chart = ImageCharts().chof('.gif') @default '.png' Image output format

# File image-charts.rb, line 188
def chof(value)
  _clone 'chof', value
end
chs(value) click to toggle source

Maximum chart size for all charts except maps is 998,001 pixels total (Google Image Charts was limited to 300,000), and maximum width or length is 999 pixels.

[Reference documentation]{@link documentation.image-charts.com/reference/chart-size/} # @example chart = ImageCharts().chs('400x400')

Chart size (<width>x<height>)

# File image-charts.rb, line 199
def chs(value)
  _clone 'chs', value
end
cht(value) click to toggle source

bvg= grouped bar chart, bvs= stacked bar chart, lc=line chart, ls=sparklines, p=pie chart. gv=graph viz

Three-dimensional pie chart (p3) will be rendered in 2D, concentric pie chart are not supported.
[Optional, line charts only] You can add :nda after the chart type in line charts to hide the default axes.

[Reference documentation]{@link documentation.image-charts.com/reference/chart-type/} # @example chart = ImageCharts().cht('bvg') chart = ImageCharts().cht('p')

Chart type

# File image-charts.rb, line 111
def cht(value)
  _clone 'cht', value
end
chts(value) click to toggle source

Format should be &#34;<color>,<font_size>&#34;, opt_alignement is not supported

[Reference documentation]{@link documentation.image-charts.com/reference/chart-title/} # @example chart = ImageCharts().chts('00FF00,17')

chart title colors and font size

# File image-charts.rb, line 274
def chts(value)
  _clone 'chts', value
end
chtt(value) click to toggle source

chart title

[Reference documentation]{@link documentation.image-charts.com/reference/chart-title/} # @example chart = ImageCharts().chtt('My beautiful chart')

chart title

# File image-charts.rb, line 263
def chtt(value)
  _clone 'chtt', value
end
chxl(value) click to toggle source

Specify one parameter set for each axis that you want to label. Format &#34;&lt;axis_index&gt;:|&lt;label_1&gt;|…|&lt;label_n&gt;|…|&lt;axis_index&gt;:|&lt;label_1&gt;|…|&lt;label_n&gt;&#34;. Separate multiple sets of labels using the pipe character ( | ).

[Reference documentation]{@link documentation.image-charts.com/reference/chart-axis/#custom-axis-labels} # @example chart = ImageCharts().chxl('0:|Jan|July|Jan') chart = ImageCharts().chxl('0:|Jan|July|Jan|1|10|20|30')

Custom string axis labels on any axis

# File image-charts.rb, line 300
def chxl(value)
  _clone 'chxl', value
end
chxr(value) click to toggle source

You can specify the range of values that appear on each axis independently, using the chxr parameter. Note that this does not change the scale of the chart elements (use chds for that), only the scale of the axis labels.

[Reference documentation]{@link documentation.image-charts.com/reference/chart-axis/#axis-range} # @example chart = ImageCharts().chxr('0,0,200') chart = ImageCharts().chxr('0,10,50,5') chart = ImageCharts().chxr('0,0,500|1,0,200')

Axis data-range

# File image-charts.rb, line 174
def chxr(value)
  _clone 'chxr', value
end
chxs(value) click to toggle source

You can specify the range of values that appear on each axis independently, using the chxr parameter. Note that this does not change the scale of the chart elements (use chds for that), only the scale of the axis labels.

[Reference documentation]{@link documentation.image-charts.com/reference/chart-axis/#axis-label-styles} # @example chart = ImageCharts().chxs('1,0000DD') chart = ImageCharts().chxs('1N*cUSD*Mil,FF0000') chart = ImageCharts().chxs('1N*cEUR*,FF0000') chart = ImageCharts().chxs('2,0000DD,13,0,t') chart = ImageCharts().chxs('0N*p*per-month,0000FF') chart = ImageCharts().chxs('0N*e*,000000|1N*cUSD*Mil,FF0000|2N*2sz*,0000FF')

Font size, color for axis labels, both custom labels and default label values

# File image-charts.rb, line 316
def chxs(value)
  _clone 'chxs', value
end
chxt(value) click to toggle source

Specify which axes you want (from: &#34;x&#34;, &#34;y&#34;, &#34;t&#34; and &#34;r&#34;). You can use several of them, separated by a coma; for example: &#34;x,x,y,r&#34;. Order is important.

[Reference documentation]{@link documentation.image-charts.com/reference/chart-axis/#visible-axes} # @example chart = ImageCharts().chxt('y') chart = ImageCharts().chxt('x,y') chart = ImageCharts().chxt('x,x,y') chart = ImageCharts().chxt('x,y,t,r,t')

Display values on your axis lines or change which axes are shown

# File image-charts.rb, line 288
def chxt(value)
  _clone 'chxt', value
end
icac(value) click to toggle source

image-charts enterprise `account_id`

[Reference documentation]{@link documentation.image-charts.com/enterprise/} # @example chart = ImageCharts().icac('accountId')

image-charts enterprise `account_id`

# File image-charts.rb, line 449
def icac(value)
  _clone 'icac', value
end
icff(value) click to toggle source

How to use icff to define font family as Google Font : developers.google.com/fonts/docs/css2

[Reference documentation]{@link documentation.image-charts.com/reference/chart-font/} # @example chart = ImageCharts().icff('Abel') chart = ImageCharts().icff('Akronim') chart = ImageCharts().icff('Alfa Slab One')

Default font family for all text from Google Fonts. Use same syntax as Google Font CSS API

# File image-charts.rb, line 473
def icff(value)
  _clone 'icff', value
end
icfs(value) click to toggle source

Default font style for all text

[Reference documentation]{@link documentation.image-charts.com/reference/chart-font/} # @example chart = ImageCharts().icfs('normal') chart = ImageCharts().icfs('italic')

Default font style for all text

# File image-charts.rb, line 485
def icfs(value)
  _clone 'icfs', value
end
ichm(value) click to toggle source

HMAC-SHA256 signature required to activate paid features

[Reference documentation]{@link documentation.image-charts.com/enterprise/} # @example chart = ImageCharts().ichm('0785cf22a0381c2e0239e27c126de4181f501d117c2c81745611e9db928b0376')

HMAC-SHA256 signature required to activate paid features

# File image-charts.rb, line 460
def ichm(value)
  _clone 'ichm', value
end
iclocale(value) click to toggle source

localization (ISO 639-1)

[Reference documentation]{@link } # @example chart = ImageCharts().iclocale('en')

localization (ISO 639-1)

# File image-charts.rb, line 496
def iclocale(value)
  _clone 'iclocale', value
end
icqrb(value) click to toggle source

Background color for QR Codes

[Reference documentation]{@link documentation.image-charts.com/qr-codes/#background-color} # @example chart = ImageCharts().icqrb('FFFFFF') @default 'FFFFFF' Background color for QR Codes

# File image-charts.rb, line 519
def icqrb(value)
  _clone 'icqrb', value
end
icqrf(value) click to toggle source

Foreground color for QR Codes

[Reference documentation]{@link documentation.image-charts.com/qr-codes/#foreground-color} # @example chart = ImageCharts().icqrf('000000') @default '000000' Foreground color for QR Codes

# File image-charts.rb, line 530
def icqrf(value)
  _clone 'icqrf', value
end
icretina(value) click to toggle source

Retina is a marketing term coined by Apple that refers to devices and monitors that have a resolution and pixel density so high — roughly 300 or more pixels per inch – that a person is unable to discern the individual pixels at a normal viewing distance.

In order to generate beautiful charts for these Retina displays, Image-Charts supports a retina mode that can be activated through the icretina=1 parameter

[Reference documentation]{@link documentation.image-charts.com/reference/retina/} # @example chart = ImageCharts().icretina('1')

retina mode

# File image-charts.rb, line 508
def icretina(value)
  _clone 'icretina', value
end
to_blob() click to toggle source

Do a request to Image-Charts API with current configuration and yield a binary string @return {String} raw image data, binary string

# File image-charts.rb, line 46
def to_blob()

  spec = Gem.loaded_specs["image-charts"]
  @request_headers = {"user-agent" => "ruby-image-charts/" + (if spec then spec.version.to_s else 'latest' end) + (if @_query.has_key?('icac') then " (#{@_query['icac']})" else '' end)}

  http = Net::HTTP.new(@_host, @_port)

  http.read_timeout= @_timeout
  http.open_timeout= @_timeout
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
  res = http.request(Net::HTTP::Get.new(URI(to_url), @request_headers))

  if (200..300).cover? res.code.to_i
    return res.body
  end


  validation_message = res['x-ic-error-validation']
  validation_code = res['x-ic-error-code']

  message = if validation_message && validation_message.length > 0 then
     JSON.parse(validation_message).map {|x| x['message']}.join("\n")
  elsif validation_code.length > 0 then
     validation_code
  else
     res.code.to_s
  end

  raise ImageChartsError.new(message, (validation_code || res.statusText), res.code)
end
to_data_uri() click to toggle source

Do a request to Image-Charts API with current configuration and yield a promise of a base64 encoded data URI @return {Promise<String>} base64 data URI wrapped inside a promise

# File image-charts.rb, line 93
def to_data_uri()
  encoding = 'base64'
  mimetype = if @_query.has_key?('chan') then 'image/gif' else 'image/png' end
  return "data:#{mimetype};#{encoding},#{Base64.encode64(to_blob())}"
end
to_file(file) click to toggle source

Do a request to Image-Charts API with current configuration and writes the content inside a file @return {Promise}

# File image-charts.rb, line 82
def to_file(file)
  data = to_blob()
  File.open(file, "wb") {
    |file| file.puts data
  }
end
to_url() click to toggle source

Get the full Image-Charts API url (signed and encoded if necessary) @return {string} full generated url

# File image-charts.rb, line 31
def to_url()
  search_params = URI.encode_www_form(@_query)

  if @_query.has_key?("icac") && @_secret && @_secret.length > 1
    signature = OpenSSL::HMAC.hexdigest('SHA256', @_secret, search_params)
    search_params += "&ichm=#{signature}"
  end

  "#{@_protocol}://#{@_host}:#{@_port}#{@_pathname}?#{search_params}"
end

Private Instance Methods

_clone(param, value) click to toggle source
# File image-charts.rb, line 537
def _clone(param, value)
  add = Hash[]
  add.merge!(@_query)
  add[param] = value
  ImageCharts(
    protocol: @_protocol,
    host: @_host,
    port: @_port,
    timeout: @_timeout,
    secret: @_secret,
    previous: add)
end